Poprzedni krok w tej serii samouczków dotyczył rejestrowania niestandardowego bloku, zarówno w JavaScript, jak i PHP. W tym kroku nauczymy się używać komponentów WordPressa do dodawania różnego rodzaju pól i ustawień.
Aby wykorzystać komponenty WordPressa w naszym bloku, musimy najpierw wiedzieć o rekwizytach.
Rekwizyty
Props jest główną funkcją Reacta i jest w zasadzie sposobem przekazywania zmiennych lub funkcji do innych komponentów. Jeśli nie znasz rekwizytów Reacta, możesz przeczytać oficjalny samouczek Reacta na ten temat.
WordPress udostępnia rekwizyty dla funkcji edit
i save
w registerBlockType()
. Wewnątrz tych rekwizytów uzyskujemy dostęp do krytycznych rzeczy, takich jak atrybuty i metoda aktualizacji naszych atrybutów. W następnym kroku omówimy szczegółowo atrybuty !
Do tej pory w naszym bloku napisaliśmy funkcję dla edit
i save
tak:
Powinieneś przyzwyczaić się do dodawania parametru props
do obu edit
i save
, tak:
Teraz masz pełny dostęp do zmiennej props
i wszystkiego, co ona zawiera, od wewnątrz edit
i save
. Jeśli jesteś ciekawy, możesz dodać console.log(props);
w edit
funkcji przed return
instrukcją. Powinieneś zobaczyć, jakie właściwości są dostępne w debugerze konsoli.
Korzystanie z komponentów WordPress
Jak wspomnieliśmy wcześniej, mamy dostęp do ogromnej biblioteki komponentów i przydatnych funkcji wewnątrz pakietu globalnego wp
. Znajdziesz gotowe do użycia komponenty dla każdego typu komponentów związanych z danymi wejściowymi, o których możesz pomyśleć. Przykłady obejmują wprowadzanie tekstu, wprowadzanie tekstu sformatowanego, listy rozwijane, przełączanie, pola wyboru, przyciski w różnych stylach, narzędzie do przesyłania multimediów i selektory kolorów. Istnieją również funkcje i komponenty zapewniające bardziej zaawansowaną funkcjonalność. Na przykład wysyłanie zapytań do WordPressa o treści (posty, kategorie itp.) za pomocą wbudowanych funkcji lub pobieranie za pomocą interfejsu API REST.
Łatwiejsze i zalecane jest korzystanie z komponentów interfejsu użytkownika WordPressa. Ma to na celu upewnienie się, że projekt i funkcjonalność są maksymalnie usprawnione, aby nie mylić ani nie denerwować użytkowników.
Ale niestety w chwili pisania tego dokumentu dokumentacja Gutenberga jest bardzo skąpa. Znalazłem najlepszy sposób, aby dowiedzieć się, co istnieje w wp
pakiecie i jak działają komponenty, zaglądając do ich oficjalnego repozytorium Gutenberg Github. Niektóre pakiety (foldery) zawierają tekst readme, który oferuje trochę dokumentacji. Spójrz na przykład na plik readme, aby znaleźć przycisk lub przełącznik.
Repozytorium Github powinno odpowiadać temu, co znajduje się w wp
pakiecie (w zależności od posiadanej wersji i gałęzi, na którą patrzysz w Github). Oznacza to, że każdy folder, który widzisz w packages
katalogu głównym na Github, znajduje się w wp
pakiecie globalnym. Jako przykład pamiętaj, że funkcja, której użyliśmy w poprzednim kroku, registerBlockType()
była inside wp.blocks
, co oznacza, że kod źródłowy tej funkcji znajdziesz wewnątrz packages/blocks/
.
Ponieważ opracowałem wiele niestandardowych bloków Gutenberga i przekopałem się całkiem sporo w repozytorium Github, odkryłem, że istnieje kilka pakietów, które zawierają najbardziej powszechną funkcjonalność używaną do tworzenia niestandardowych bloków. Dołączę je poniżej.
Aby uzyskać pełniejszy przegląd dostępnych komponentów, polecam pobranie mojego bezpłatnego eBooka zawierającego dostępne komponenty w Gutenberg! Zawiera najpopularniejsze i najbardziej przydatne komponenty z dokumentacją dotyczącą rekwizytów i przykładami kodu:
Szybki przegląd najpopularniejszych pakietów, których będziesz używać do bloków
Oczywiście jest ich znacznie więcej, ale poniżej jest to, co jest najczęściej spotykane w przypadku tworzenia bloków. W tej serii samouczków użyjemy większości, jeśli nie wszystkich z nich. Za każdym razem, gdy chcesz użyć komponentu, musisz wiedzieć, w jakim pakiecie się znajduje.
wp.komponenty
W środku znajdziesz większość komponentów wejściowych interfejsu użytkownika wp.components
. Przykładami są różne wprowadzanie tekstu, zaznaczenia, pola wyboru, przyciski opcji, przeciągane komponenty, przyciski, selektor kolorów, selektor daty i tak dalej. Znajdziesz tu również komponenty interfejsu użytkownika, których możesz użyć do blokowego paska narzędzi i zawartości paska bocznego ustawień (nazywanych InspectorControls) w edytorze.
Sprawdź foldery w repozytorium Github.
wp.blockEditor i wp.editor
W tych dwóch pakietach znajdziesz przydatne komponenty do obsługi tekstu sformatowanego, obsługi obrazów/przesyłania multimediów oraz komponenty do faktycznego dodawania pasków narzędzi lub niestandardowych paneli Inspektora (paska bocznego).
Pod koniec tej serii przyjrzymy się budowaniu dynamicznych bloków, w których użyjemy PHP do renderowania wyjścia bloku, a do tego użyjemy komponentu from wp.editor
.
Jak rozumiem, większość komponentów pojawiła się wp.editor
we wczesnych czasach Gutenberga, ale zwłaszcza po WordPressie 5.3, wiele z nich zostało przeniesionych do wp.blockEditor
. Jeśli użyjesz komponentu, w wp.editor
którym WordPress planuje się do wp.blockEditor
niego przenieść, od teraz nie zawiedzie, ale w debuggerze konsoli otrzymasz ostrzeżenia, że został on przestarzały i że powinieneś się na niego przełączyć, wp.blockEditor
kiedy tylko możesz. I odwracalnie, jeśli śledzisz tę serię ze starszą wersją WordPressa, z jakiegoś powodu możesz napotkać błędy podczas wywoływania komponentów, które nie wp.blockEditor
zostały jeszcze przeniesione.
wp.element
W środku wp.element
znajdziesz komponenty odpowiadające komponentom React. Na przykład Component
(co odpowiada React.Component
) i Fragment
( React.Fragment
). Użyjemy ich, gdy zaczniemy dzielić nasz kod na osobne komponenty.
wp.i18n
Jak sama nazwa wskazuje, wp.i18n
pakiet zawiera funkcje do obsługi tłumaczeń. Zawiera te same funkcje tłumaczenia, jakie znamy w PHP; na przykład __()
i _e()
. Przyjrzymy się temu szczegółowo w <<<>>>>, kiedy dowiemy się, jak przetłumaczyć nasz blok.
wp.dane
Pakiet wp.data
służy do odpytywania WordPressa o dane poza edytorem. Istnieją komponenty do rozsyłania wiadomości, withSelect
których select
użyjemy w dalszej części tej serii do odpytywania postów wewnątrz naszego bloku.
wp.compose
Poprzedni pakiet i wp.compose
jest przeznaczony do bardziej zaawansowanego budowania bloków. Wewnątrz tego pakietu znajdziemy komponenty i funkcje do tworzenia tzw. komponentów wyższego rzędu. Komponenty wyższego rzędu to technika wzorca w React do ponownego użycia komponentów i logiki, i użyjemy jej w połączeniu z wp.data
w celu odpytywania postów.
Dość gadania – jak w praktyce wykorzystujesz niektóre z tych komponentów?
Jak wcześniej wspomniano; aby korzystać z komponentów WordPressa, musisz wiedzieć, gdzie się znajdują. Mam nadzieję, że mój przegląd w połączeniu z repozytorium Github da ci pewne pojęcie, gdzie je zdobyć.
Nie zapominaj, że zawsze możesz dodać dowolne zwykłe znaczniki HTML, takie jak div, span, nagłówki i tak dalej. Pamiętaj tylko, aby w atrybutach postępować zgodnie z wytycznymi Reacta. Na przykład class
jest zarezerwowanym słowem kluczowym w React (do tworzenia komponentów opartych na klasach), więc jeśli chcesz dodać klasę do elementu HTML, musisz użyć className
.
Uwaga: Podczas programowania nie zapomnij rozpocząć npm run start
kompilacji kodu.
Jako prosty przykład wypróbujmy kilka komponentów, aby zobaczyć, jak wyglądają. Destrukturyzujemy je z odpowiadających im pakietów i wykorzystujemy w naszej edit
funkcji.
To na przykład spowoduje, że nasz blok będzie wyglądał tak w edytorze.
Zauważysz, że podczas wpisywania w konsoli otrzymasz komunikaty o błędach i że nie zapisze to, co wpisujesz po zaktualizowaniu posta (i odświeżeniu). Dzieje się tak, ponieważ brakuje nam właściwości komponentów, które są połączeniem z atrybutami, w których przechowywane są wszystkie nasze dane blokowe. Rekwizyty są odpowiedzialne za przekazywanie zapisanych wartości oraz funkcje odpowiedzialne za aktualizację naszych atrybutów, gdy coś się zmieni w naszych wejściach. To właśnie zrobimy w następnym kroku, w którym wreszcie zaczniemy pisać kod na serio.