Gutenberg Wszystko, co musisz wiedzieć o najnowszym edytorze WordPress
Gutenberg to nowy edytor WordPress, który całkowicie zastąp bieżący edytor oparty na TinyMCE. Jest to ambitny projekt, który prawdopodobnie zmieni WordPress na wiele sposobów i wpłynie zarówno na zwykłych użytkowników końcowych, jak i na programistów, szczególnie tych, którzy polegają na ekranie edytora podczas pracy nad WordPress. Oto jak to wygląda.
Gutenberg wprowadza również nowy paradygmat w WordPressie “Blok”.
“Blok” jest abstrakcyjnym terminem używanym do opisu jednostki marży które składają się z treści lub układu strony internetowej. Pomysł łączy koncepcje tego, co dzisiaj osiągamy w WordPressie shortcodes, niestandardowy HTML i osadzanie odnajdowania w jednym spójnym interfejsie API i doświadczenie użytkownika.
Konfigurowanie projektu
Wiedząc, że Gutenberg jest zbudowany na szczycie React, niektórzy deweloperzy obawiają się, że bariera jest zbyt wysoka, aby deweloperzy na poziomie podstawowym mogli rozwijać Gutenberga.
Skonfigurowanie React.js może być dość czasochłonne i mylące, jeśli dopiero zaczynasz. Będziesz potrzebował przynajmniej transformatora JSX, Babel, w zależności od kodu możesz potrzebować wtyczek Babel i Bundlera takiego jak Webpack, Rollup lub Parcel.
na szczęście, niektórzy ludzie w społeczności WordPress przyspieszyli i staramy się, aby rozwój Gutenberg był tak prosty, jak to tylko możliwe, aby wszyscy mogli go śledzić. Dzisiaj mamy narzędzie, które wygeneruje tzw możemy zacząć pisać kod od razu zamiast błądzić narzędziami i konfiguracjami.
Utwórz blok Guten
The utwórz-guten-blok
to inicjowany projekt Ahmada Awaisa. To jest zestaw narzędzi do konfiguracji zerowej (# 0CJS
), które pozwolą ci rozwinąć blok Gutenberga z kilkoma nowoczesnymi ustawieniami stosów, w tym React, Webpack, ESNext, Babel, ESLint i Sass. Postępuj zgodnie z instrukcjami, aby rozpocząć tworzenie bloku Guten Block.
Korzystanie z ES5 (ECMAScript 5)
Wykorzystanie wszystkich tych narzędzi do stworzenia prostego “Witaj świecie” blok może wydawać się za dużo. Jeśli chcesz utrzymywać swoje stosy na niskim poziomie, możesz stworzyć blok Gutenberga, używając zwykłego dobrego ECMAScript 5, z którym możesz już się zaznajomić. Jeśli masz WP-CLI 1.5.0 zainstalowany na komputerze, możesz po prostu uruchomić…
wp blok rusztowań[--title = ] [--dashicon = ] [--category = ] [--theme] [--plugin = ] [--siła]
… do wygeneruj blok Gutenberga do swojej wtyczki lub motywu. Podejście to jest bardziej sensowne, szczególnie w przypadku istniejących wtyczek i motywów, które opracowałeś przed erą Gutenberga.
Zamiast tworzyć nową wtyczkę, która pomieści bloki Gutenberga, możesz zintegrować bloki z wtyczkami lub motywami. I uczynić ten samouczek łatwym do śledzenia dla wszystkich, będziemy używać ECMAScript 5 z WP-CLI.
Rejestracja nowego bloku
Gutenberg jest obecnie rozwijany jako wtyczka i zostanie połączony z WordPress 5.0, gdy zespół uzna, że jest gotowy. Więc na razie musisz zainstalować go z Strona wtyczek w wp-admin
. Po zainstalowaniu i aktywowaniu uruchom następujące polecenie w terminalu lub wierszu polecenia, jeśli jesteś na komputerze z systemem Windows.
seria bloków rusztowań wp --title = "HTML5 Series" - motyw
To polecenie wygeneruje blok do aktualnie aktywnego motywu. Nasz blok składa się z następujących plików:
. ZA¢Â¢Â¢Â seria â  Ââ € ⢢ block.js â  Ââ € ⢢ editor.css â  Ââ € ⢢ style.css ⢢ series.php
Załadujmy główny plik naszych bloków w functions.php
naszego tematu:
if (function_exists ('register_block_type')) wymaga get_template_directory (). '/blocks/series.php';
Zwróć uwagę, że ładujemy plik z warunkowym. To zapewnia zgodność z poprzednią wersją WordPress, którą nasz blok jest ładowany tylko wtedy, gdy Gutenberg jest obecny. Nasz blok powinien być teraz dostępny w interfejsie Gutenberga.
Tak to wygląda, gdy wstawiamy blok.
Gutenberg API
Gutenberg wprowadza dwa zestawy API do rejestracji nowego bloku. Jeśli spojrzymy na series.php
, znajdziemy następujący kod, który rejestruje nasz nowy blok. To także ładuje arkusz stylów i JavaScripts na front-end i edytor.
register_block_type ('twentyseventeen / series', array ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'series-block',));
Jak widzimy powyżej, nasz Blok ma nazwę dwadzieścia lat / seria
, nazwa bloku musi być unikalna i opatrzona nazwami, aby uniknąć kolizji z innymi blokami przynoszonymi przez inne wtyczki.
Ponadto, Gutenberg zapewnia zestaw nowych interfejsów API JavaScript do interakcji z “Blok” berło w edytorze. Ponieważ interfejs API jest dość bogaty, skupimy się na pewnych szczegółach, które, jak sądzę, powinieneś wiedzieć, aby uzyskać prosty, ale funkcjonujący blok Gutenberga.
wp.blocks.registerBlockType
Po pierwsze, będziemy się przyglądać wp.blocks.registerBlockType
. Ta funkcja jest używana zarejestruj nowy “Blok” do edytora Gutenberga. Wymaga dwóch argumentów. Pierwszym argumentem jest nazwa bloku, która powinna następować po nazwie zarejestrowanej w register_block_type
funkcja po stronie PHP. Drugi argument to Obiekt definiujący właściwości bloku jak tytuł, kategoria i kilka funkcji do renderowania interfejsu Blok.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series'), kategoria: 'widgets', słowa kluczowe: ['html'], edit: function (props) , save: function (props) );
wp.element.createElement
Ta funkcja pozwala utworzyć element wewnątrz “Blok” w edytorze postów. The wp.element.createElement
funkcja jest zasadniczo abstrakcją Reakcji createElement ()
funkcja przyjmuje ten sam zestaw argumentów. Pierwszy argument przyjmuje typ elementu, na przykład akapit, a przęsło
, lub a div
jak pokazano niżej:
wp.element.createElement ('div');
Możemy alias funkcji do zmiennej więc pisanie jest krótsze. Na przykład:
var el = wp.element.createElement; el („div”);
Jeśli ty preferuj używanie nowej składni ES6, możesz to zrobić w ten sposób:
const createElement: el = wp.element; el („div”);
Możemy także dodaj atrybuty elementu tak jak klasa
nazwa lub ID
w drugim parametrze w następujący sposób:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001');
The div
to, co stworzyliśmy, nie miałoby sensu bez treści. Możemy dodaj treść do argumentu trzeciego parametru:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Ten artykuł jest częścią naszej serii samouczków HTML5 / CSS3 aby pomóc ci stać się lepszym projektantem i / lub deweloperem Kliknij tutaj, aby zobaczyć więcej artykułów z tej samej serii ');
wp.components
The wp.components
zawierają zbiór, jak sama nazwa wskazuje, komponentów Gutenberga. Komponenty te są technicznie komponentami React zawierającymi Button, Popover, Spinner, podpowiedź i grupę innych. Możemy używaj ponownie tych komponentów w naszym własnym bloku. W poniższym przykładzie dodajemy składnik przycisku.
var Button = wp.components.Button; el (Przycisk, 'class': 'przycisk pobierania',, 'Pobierz');
Atrybuty
Atrybuty to sposób przechowywania danych w naszym bloku, dane te mogą być takie jak treść, kolory, wyrównania, URL itp. Możemy przekazać atrybuty z właściwości przekazanych edytować()
funkcja w następujący sposób:
edit: function (props) var content = props.attributes.seriesContent; return el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', treść);
Aby zaktualizować atrybuty, używamy setAttributes ()
funkcjonować. Zazwyczaj zmienilibyśmy zawartość pewnych działań, np. Po kliknięciu przycisku, wypełnieniu wejścia, wybraniu opcji itp. W poniższym przykładzie używamy go do dodania powrócić zawartość naszego bloku na wypadek, gdyby coś nieoczekiwanego stało się naszym seriesContent
Atrybut.
edit: function (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Hello World! Oto zawartość rezerwowa.' ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', treść),];
Zapisywanie bloku
The zapisać()
funkcja działa podobnie jak edytować()
, z wyjątkiem tego, że definiuje zawartość naszego bloku, aby zapisać go w bazie danych postów. Zapisywanie zawartości bloku jest dość proste, jak widzimy poniżej:
save: function (props) if (! props ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', treść),];
Co dalej?
Gutenberg zmieni ekosystem WordPress na lepsze (a może nawet gorzej). Umożliwia programistom przyjąć nowy sposób tworzenia wtyczek i motywów WordPress. Gutenberg to tylko początek. Wkrótce “Blok” paradygmat zostanie rozszerzony na inne obszary WordPress, takie jak ustawienia API i widżety.
Dowiedz się JavaScript głęboko; to jedyny sposób, aby dostać się do Gutenberga i pozostać w zgodzie z przyszłością w branży WordPress. Jeśli znasz już podstawy JavaScript, dziwactwa, funkcje, narzędzia, towary i zło, jestem naprawdę pewien, że poradzisz sobie z Gutenbergiem.
Jak już wspomniałem, Gutenberg obnaża mnóstwo interfejsów API, wystarczających, by zrobić prawie wszystko w swoim bloku. Możesz wybrać, czy chcesz koduj swój blok zwykłym starym JavaScriptem, JavaScript ze składnią ES6, React, a nawet Vue.
Pomysły i inspiracje
Stworzyłem bardzo (bardzo) prosty blok Gutenberga, który można znaleźć w repozytorium naszego konta Github. Ponadto stworzyłem wiele repozytoriów, z których możesz czerpać inspirację do budowania bardziej złożonego bloku.
- Gutenblocks - Kolekcja bloków Mathieu Viet napisana w JavaScript ze składnią ES5
- Jetpack Gutenblocks Project - kolekcja bloków w pakiecie Jetpack
- Lista przykładów wdrożenia Gutenberga, w tym z Vue.js
Dalsze informacje
- Oficjalne repozytorium Gutenberga
- Podręcznik Gutenberga