✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak kontrolować bloki Gutenberga dla postów w WordPress: Wyłącz bloki i szablony bloków

16

Nowy edytor WordPressa, Gutenberg, daje autorowi dużą elastyczność w tworzeniu bogatych treści. Ale w niektórych przypadkach może być konieczne pewne ograniczenie, jako webmaster witryny lub programista motywów. W tym poście przyjrzymy się, jak możemy zapewnić ograniczenia blokowe w Gutenberg za pomocą PHP.

Istnieje wbudowana funkcjonalność, aby ustawić pewne ograniczenia w blokach, z którymi wielu jeszcze nie jest zaznajomionych. Może to być przydatne, gdy potrzebujesz, aby niektóre posty były zgodne z tym samym projektem lub treścią, lub jeśli chcesz pomóc autorom nietechnicznym, aby nie byli przytłoczeni liczbą bloków w Gutenbergu. Innym przykładem jest automatyczne dodawanie niezbędnych bloków reklam (jeśli masz wtyczkę reklamową) między tekstami w postach. Możesz to wymusić lub użyć tych technik, aby pomóc autorom pamiętać o ich dodaniu.

W tym poście przyjrzymy się dwóm sposobom kontrolowania bloków w WordPress Gutenberg. Jednym ze sposobów jest ograniczenie, jaki rodzaj bloków można dodać. Innymi słowy usuń pewne typy bloków, których nie chcesz, aby były dostępne. Możemy to zrobić konkretnie według typu postu lub globalnie. Innym sposobem jest użycie szablonów blokowych. WordPress oferuje wybór zestawu predefiniowanych bloków podczas tworzenia nowego posta. Odbywa się to według typu postu. Dzięki szablonom bloków możesz zaoferować autorowi początkowe bloki, które pomogą mu w napisaniu postu, lub możesz zablokować bloki w miejscu, aby autor nie mógł zmienić swojej pozycji ani dodać nowych.

Możesz to zrobić za pomocą PHP lub JavaScript. Ten przewodnik omówi sposób PHP.

Usuń typy bloków

Czarna lista

W WordPressie jest filtr PHP o nazwie allowed_block_types. Ten filtr podaje dwa parametry; tablica wszystkich bloków i obiekt post. Wszystko, co musimy zrobić, to zarządzać tablicą przed jej zwróceniem. A ponieważ w filtrze otrzymujemy również obiekt postu, możemy również dodawać reguły według typu posta lub innych informacji meta postu.

Tablica bloków składa się z ciągów nazw bloków w przestrzeni nazw. Wszystkie bloki w WordPress wymagają przestrzeni nazw z przedrostkiem przed nazwą bloku. W przypadku podstawowych bloków WordPress przestrzeń nazw to „ core/", a w przypadku osadzonych bloków WordPress przestrzeń nazw to „ core-embed/“. Na przykład blok nagłówka ma core/headingw tej tablicy nazwę „ “. Stworzyłem pełny przegląd nazw wszystkich typów bloków w moim poście na temat Jak aby uzyskać dostęp i przeanalizować bloki posta.

Oto krótki przykład użycia filtra do usunięcia wszystkich bloków z wyjątkiem akapitu. Dotyczy to wszystkich typów postów.

add_filter('allowed_block_types', function($block_types, $post) { return ['core/paragraph']; }, 10, 2);

Jeśli dodasz ten kod do functions.phppliku motywu lub wtyczki, rezultatem będzie całkowite zabronienie Gutenbergowi jakichkolwiek innych bloków niż akapit. Nie będziesz nawet w stanie zobaczyć żadnych innych bloków, nie możesz też spróbować ich zwabić, wpisując „ /” w poście (skrót bloku) lub je wyszukując.

Możemy zdefiniować bloki, które chcemy zachować lub usunąć według typu posta. Po prostu sprawdzamy właściwość post_typeobiektu pocztowego. W poniższym przykładzie kodu definiujemy nową tablicę bloków, na które chcemy zezwolić i dodajemy tę regułę tylko dla niestandardowego typu postu „ book“.

Za pomocą powyższego kodu otrzymujesz wszystkie bloki podczas edycji postów i stron, ale podczas edycji niestandardowego postu typu „ book“, możesz dodawać tylko akapity, nagłówki i pojedyncze obrazy.

Użyj swojej wyobraźni, aby dodać własne zasady. Ponieważ mamy obiekt post, możemy uzyskać dostęp do większości potrzebnych informacji. Być może musisz ograniczyć wybór bloków za pomocą wartości meta postu? Na przykład przez wybrany szablon strony, wybraną kategorię postów lub coś innego.

Biała lista

O ile widzę, możesz tylko umieścić na białej liście (zdecydować, które z nich usunąć, w przeciwieństwie do tego, który zachować) bloki, wyrejestrowując je w pewnym momencie. I musisz to zrobić za pomocą JavaScript, a nie PHP.

Nie będę wchodzić w szczegóły, ale będziesz musiał umieścić w kolejce plik JavaScript załadowany initlub enqueue_block_editor_assetsprzechwycony, z zależnością wp-dom-readyi jako. wp-blocksWewnątrz skryptu możesz ustawić zmienną dla tych, które chcesz usunąć, przestrzegając tych samych zasad dla przestrzeni nazw i nazw bloków powyżej. I dla każdej nazwy bloku wywołujesz funkcję unregisterBlockType()z wp.blockspakietu. Zwykle trzeba to zrobić wewnątrz funkcji, wp.domReady()aby upewnić się, że kolejność ładowania skryptu jest poprawna.

Coś takiego:

var removeBlocks = [ 'core/paragraph', 'core/heading', 'core/image' ];   wp.domReady(function() { removeBlocks.forEach(function(blockName) { wp.blocks.unregisterBlockType(blockName); }); });

Usuwanie typów bloków to jeden ze sposobów kontrolowania bloków w Gutenbergu. Spójrzmy na inny, być może fajniejszy sposób kontrolowania bloków: szablony bloków.

Szablony blokowe

Innym sposobem kontrolowania bloków Gutenberga w WordPressie jest użycie szablonów bloków. WordPress posiada funkcjonalność, która pozwala na zapełnianie nowych postów zestawem predefiniowanych bloków. Może to być przydatne, aby pomóc autorom, pokazując im sugestię struktury bloku. Możesz także zablokować te wstępnie wypełnione bloki, nie pozwalając autorom na zmianę kolejności lub dodawanie innych bloków. Jest to przydatne, gdy chcesz, aby posty miały określoną strukturę i projekt – na przykład upewniając się, że wszystkie posty tego typu mają informacje o takiej samej strukturze.

Możemy dodać szablony bloków z nowym parametrem do [register_post_type](https://developer.wordpress.org/reference/functions/register_post_type/)()funkcji służącej do rejestrowania niestandardowych typów postów (uwaga: nowy parametr nie został jeszcze dodany do dokumentacji). Możesz także dodać lub dostosować parametry istniejących typów postów, takich jak posty i strony – zobacz poniżej, jak to zrobić.

Nowy parametr register_post_type()to „ template“. Jako wartość „ template” musisz podać tablicę bloków. Każdy blok również musi być tablicą. Jako minimum musisz podać pierwszy element tablicy; nazwę bloku (np core/paragraph. ). Możesz opcjonalnie dodać drugi element tablicy dla atrybutów i trzeci element tablicy dla zagnieżdżonych bloków (np. Bloki okładki, kolumny). Gdy zobaczysz kod, stanie się to bardziej zrozumiałe.

Zacznijmy od prostych. Załóżmy, że mamy register_post_type()wywołanie funkcji do zarejestrowania niestandardowego typu posta „ book“. Chcemy wypełnić wszystkie nowe posty tego typu postem blokiem akapitu z symbolem zastępczym informującym autora, co powinien napisać.

Zwróć uwagę, że tablica atrybutów (zawierająca symbol zastępczy) jest opcjonalna. Teraz, z tym parametrem „szablon” za każdym razem, gdy tworzymy nowe posty, zostanie on utworzony z blokiem akapitu, który zawiera symbol zastępczy „Tutaj napisz intro…”.

Spójrzmy na bardziej skomplikowany przykład: zagnieżdżone bloki. Powiedzmy, że chcemy dodać blok okładki, który ma blok nagłówka, akapit i przycisk w środku, wyrównane do środka. Tytuł i akapit będą miały symbol zastępczy:

Poniższy obrazek pokazuje, co otrzymamy, tworząc nowe posty książkowe. Wygląda mniej onieśmielająco niż puste płótno, prawda?

Jak kontrolować bloki Gutenberga dla postów w WordPress: Wyłącz bloki i szablony bloków

Pamiętaj, że atrybuty są różne w każdym typie bloku i mogą również różnić się w twojej konfiguracji. W powyższym przykładzie kodu dodaję dwa atrybuty do bloku Cover; wyrównanie bloku do „Pełnej szerokości” i nałożenie koloru na predefiniowany kolor z niestandardowej palety kolorów.

Wyrównania bloków „Szeroka szerokość” i „Pełna szerokość” muszą być specjalnie obsługiwane w Twoim motywie. Mam post, który wyjaśnia, jak dodać wsparcie w swoim motywie dla dodatkowych wyrównań bloków, jeśli nie jesteś zaznajomiony z tym. Po drugie, moim motywem jest dostarczenie niestandardowej palety kolorów Gutenberga, w której jeden z kolorów palety nazywa się „profil niebieski”. To prawdopodobnie nie będzie istnieć w twoim kodzie. Powyższy link wyjaśnia to również, jeśli nie znasz również niestandardowej palety Gutenberga.

Powodem, dla którego zdecydowałem się podać kolor nakładki jako atrybut, jest zachowanie bloku Cover. Kiedy tworzysz blok okładki, zaczyna się od pytania o wybór między ustawieniem obrazu tła lub wybraniem koloru tła. Dopóki autor nie wybierze aktywnie jednego z nich, blok Okładka ukrywa wszelkie zawarte w nim treści (nagłówek, akapit i przycisk, który dodaliśmy)! Po prostu wyskoczą nagle po wybraniu obrazu lub koloru. Dlatego, aby uniknąć nieporozumień, wstępnie wybrałem kolor tła, aby autor od razu widział wszystkie bloki w środku. W każdym razie kolor można zmienić w Inspektorze (pasku bocznym).

Blokowanie szablonu bloku

Dzięki dostarczonemu szablonowi bloku autor może zmienić i usunąć dowolne wstępnie wypełnione bloki, a także dodać nowe bloki w dowolnym miejscu. Jeśli chcesz tego uniknąć, istnieje inny parametr do register_post_type(): ‘ template_lock‘.

Parametr „ template_lock” przyjmuje dwie wartości; ‘ all‘ lub ‘ insert‘.

Ustawienie ‘ template_lock‘ na ‘ all‘ całkowicie blokuje autorom przestawianie, usuwanie lub dodawanie nowych bloków do szablonu bloku. Mogą jedynie edytować zawartość i ustawienia bloków zdefiniowanych jako szablon bloku. Jest to przydatne w przypadkach, gdy chcesz, aby wszystkie typy postów składały się z tych samych bloków w tej samej kolejności – nie więcej i nie mniej.

Użycie „ insert” dla „ template_lock” umożliwia autorom zmianę kolejności bloków w szablonie bloku. Ale autorzy nadal nie mogą dodawać nowych bloków ani usuwać żadnych bloków.

Oto jak całkowicie zablokować szablon bloku dla niestandardowego typu posta „ book“:

Korzystanie z zablokowanego szablonu bloku w Gutenbergu będzie wyglądać jak poniżej. Zauważ, że brakuje ikon akcji do zmiany kolejności bloków, a także do usuwania linków bloków w menu. Nie ma też ikon akcji do dodawania nowych bloków (mały „+”) nigdzie.

Jak kontrolować bloki Gutenberga dla postów w WordPress: Wyłącz bloki i szablony bloków

Dostosowywanie szablonów bloków do istniejących typów postów

Jeśli chcesz używać szablonów blokowych w postach lub stronach, możesz to również zrobić. Podłącz funkcję do initi użyj [get_post_type_object](https://developer.wordpress.org/reference/functions/get_post_type_object/)(). Podaj typ posta, który chcesz jako parametr (albo „ post” albo „ page“). Zwraca obiekt, do którego można przypisać właściwości „ template” i „ template_lock“.

To jest przykład dodania tego samego szablonu bloku i właściwości blokady jak powyżej na stronach:

Wniosek

W tym poście dowiedzieliśmy się, jak osiągnąć większą kontrolę nad blokami w edytorze WordPress Gutenberg. Jest to wiele korzyści, zwłaszcza w połączeniu z niestandardowymi typami postów, które muszą mieć określoną strukturę. Korzystanie z powyższych technik pomoże Ci bardziej usprawnić proces, zarówno jako webmaster (pomagając ludziom pisać lepsze posty), jak i jako programista motywów (zapewniając wspólny projekt). Zablokowane szablony bloków mogą być innym rozwiązaniem niż niestandardowe szablony postów i meta postów.

Dostosowywanie szablonów bloków jest w tej chwili dość ukrytą funkcją Gutenberga. Ale spodziewam się, że to się zmieni wraz z rozwojem Gutenberga i uzyskaniem bardziej znajomego miejsca w WordPressie.

Źródło nagrywania: awhitepixel.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów