{"id":233823,"date":"2023-02-22T17:52:00","date_gmt":"2023-02-22T14:52:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233823"},"modified":"2022-11-11T12:38:06","modified_gmt":"2022-11-11T09:38:06","slug":"jak-kontrolowac-bloki-gutenberga-dla-postow-w-wordpress-wylacz-bloki-i-szablony-blokow","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/jak-kontrolowac-bloki-gutenberga-dla-postow-w-wordpress-wylacz-bloki-i-szablony-blokow\/","title":{"rendered":"Jak kontrolowa\u0107 bloki Gutenberga dla post\u00f3w w WordPress: Wy\u0142\u0105cz bloki i szablony blok\u00f3w"},"content":{"rendered":"\n<p>Nowy edytor WordPressa, Gutenberg, daje autorowi du\u017c\u0105 elastyczno\u015b\u0107 w tworzeniu bogatych tre\u015bci. Ale w niekt\u00f3rych przypadkach mo\u017ce by\u0107 konieczne pewne ograniczenie, jako webmaster witryny lub programista motyw\u00f3w. W tym po\u015bcie przyjrzymy si\u0119, jak mo\u017cemy zapewni\u0107 ograniczenia blokowe w Gutenberg za pomoc\u0105 PHP.<\/p>\n<p>Istnieje wbudowana funkcjonalno\u015b\u0107, aby ustawi\u0107 pewne ograniczenia w blokach, z kt\u00f3rymi wielu jeszcze nie jest zaznajomionych. Mo\u017ce to by\u0107 przydatne, gdy potrzebujesz, aby niekt\u00f3re posty by\u0142y zgodne z tym samym projektem lub tre\u015bci\u0105, lub je\u015bli chcesz pom\u00f3c autorom nietechnicznym, aby nie byli przyt\u0142oczeni liczb\u0105 blok\u00f3w w Gutenbergu. Innym przyk\u0142adem jest automatyczne dodawanie niezb\u0119dnych blok\u00f3w reklam (je\u015bli masz wtyczk\u0119 reklamow\u0105) mi\u0119dzy tekstami w postach. Mo\u017cesz to wymusi\u0107 lub u\u017cy\u0107 tych technik, aby pom\u00f3c autorom pami\u0119ta\u0107 o ich dodaniu.<\/p>\n<p>W tym po\u015bcie przyjrzymy si\u0119 dw\u00f3m sposobom kontrolowania blok\u00f3w w WordPress Gutenberg. Jednym ze sposob\u00f3w jest ograniczenie, jaki rodzaj blok\u00f3w mo\u017cna doda\u0107. Innymi s\u0142owy usu\u0144 pewne typy blok\u00f3w, kt\u00f3rych nie chcesz, aby by\u0142y dost\u0119pne. Mo\u017cemy to zrobi\u0107 konkretnie wed\u0142ug typu postu lub globalnie. Innym sposobem jest u\u017cycie szablon\u00f3w blokowych. WordPress oferuje wyb\u00f3r zestawu predefiniowanych blok\u00f3w podczas tworzenia nowego posta. Odbywa si\u0119 to wed\u0142ug typu postu. Dzi\u0119ki szablonom blok\u00f3w mo\u017cesz zaoferowa\u0107 autorowi pocz\u0105tkowe bloki, kt\u00f3re pomog\u0105 mu w napisaniu postu, lub mo\u017cesz zablokowa\u0107 bloki w miejscu, aby autor nie m\u00f3g\u0142 zmieni\u0107 swojej pozycji ani doda\u0107 nowych.<\/p>\n<p>Mo\u017cesz to zrobi\u0107 za pomoc\u0105 PHP lub JavaScript. Ten przewodnik om\u00f3wi spos\u00f3b PHP.<\/p>\n<h2>Usu\u0144 typy blok\u00f3w<\/h2>\n<h3>Czarna lista<\/h3>\n<p>W WordPressie jest filtr PHP o nazwie <code>allowed_block_types<\/code>. Ten filtr podaje dwa parametry; tablica wszystkich blok\u00f3w i obiekt post. Wszystko, co musimy zrobi\u0107, to zarz\u0105dza\u0107 tablic\u0105 przed jej zwr\u00f3ceniem. A poniewa\u017c w filtrze otrzymujemy r\u00f3wnie\u017c obiekt postu, mo\u017cemy r\u00f3wnie\u017c dodawa\u0107 regu\u0142y wed\u0142ug typu posta lub innych informacji meta postu.<\/p>\n<p>Tablica blok\u00f3w sk\u0142ada si\u0119 z ci\u0105g\u00f3w nazw blok\u00f3w w przestrzeni nazw. Wszystkie bloki w WordPress wymagaj\u0105 przestrzeni nazw z przedrostkiem przed nazw\u0105 bloku. W przypadku podstawowych blok\u00f3w WordPress przestrze\u0144 nazw to \u201e <code>core\/<\/code>&quot;, a w przypadku osadzonych blok\u00f3w WordPress przestrze\u0144 nazw to \u201e <code>core-embed\/<\/code>&#8222;. Na przyk\u0142ad blok nag\u0142\u00f3wka ma <code>core\/heading<\/code>w tej tablicy nazw\u0119 \u201e &#8222;. Stworzy\u0142em pe\u0142ny przegl\u0105d nazw wszystkich typ\u00f3w blok\u00f3w w moim po\u015bcie na temat <a href=\"https:\/\/awhitepixel.com\/blog\/wordpress-gutenberg-access-parse-blocks-with-php\/#block-names\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jak aby uzyska\u0107 dost\u0119p i przeanalizowa\u0107 bloki posta<\/a>.<\/p>\n<p>Oto kr\u00f3tki przyk\u0142ad u\u017cycia filtra do usuni\u0119cia wszystkich blok\u00f3w z wyj\u0105tkiem akapitu. Dotyczy to wszystkich typ\u00f3w post\u00f3w.<\/p>\n<pre><code>add_filter('allowed_block_types', function($block_types, $post) {\n    return ['core\/paragraph'];\n}, 10, 2);<\/code><\/pre>\n<p>Je\u015bli dodasz ten kod do <code>functions.php<\/code>pliku motywu lub wtyczki, rezultatem b\u0119dzie ca\u0142kowite zabronienie Gutenbergowi jakichkolwiek innych blok\u00f3w ni\u017c akapit. Nie b\u0119dziesz nawet w stanie zobaczy\u0107 \u017cadnych innych blok\u00f3w, nie mo\u017cesz te\u017c spr\u00f3bowa\u0107 ich zwabi\u0107, wpisuj\u0105c \u201e <code>\/<\/code>&#8221; w po\u015bcie (skr\u00f3t bloku) lub je wyszukuj\u0105c.<\/p>\n<\/p>\n<p>Mo\u017cemy zdefiniowa\u0107 bloki, kt\u00f3re chcemy zachowa\u0107 lub usun\u0105\u0107 wed\u0142ug typu posta. Po prostu sprawdzamy w\u0142a\u015bciwo\u015b\u0107 <code>post_type<\/code>obiektu pocztowego. W poni\u017cszym przyk\u0142adzie kodu definiujemy now\u0105 tablic\u0119 blok\u00f3w, na kt\u00f3re chcemy zezwoli\u0107 i dodajemy t\u0119 regu\u0142\u0119 tylko dla niestandardowego typu postu \u201e <code>book<\/code>&#8222;.<\/p>\n<pre><code>add_filter('allowed_block_types', function($block_types, $post) {\n    $allowed = [\n        'core\/paragraph',\n        'core\/heading',\n        'core\/image'\n    ];\n    if ($post-&gt;post_type == 'book') {\n        return $allowed;\n    }\n    return $block_types;\n}, 10, 2);<\/code><\/pre>\n<p>Za pomoc\u0105 powy\u017cszego kodu otrzymujesz wszystkie bloki podczas edycji post\u00f3w i stron, ale podczas edycji niestandardowego postu typu \u201e <code>book<\/code>&#8222;, mo\u017cesz dodawa\u0107 tylko akapity, nag\u0142\u00f3wki i pojedyncze obrazy.<\/p>\n<p>U\u017cyj swojej wyobra\u017ani, aby doda\u0107 w\u0142asne zasady. Poniewa\u017c mamy obiekt post, mo\u017cemy uzyska\u0107 dost\u0119p do wi\u0119kszo\u015bci potrzebnych informacji. By\u0107 mo\u017ce musisz ograniczy\u0107 wyb\u00f3r blok\u00f3w za pomoc\u0105 warto\u015bci meta postu? Na przyk\u0142ad przez wybrany szablon strony, wybran\u0105 kategori\u0119 post\u00f3w lub co\u015b innego.<\/p>\n<h3>Bia\u0142a lista<\/h3>\n<p>O ile widz\u0119, mo\u017cesz tylko umie\u015bci\u0107 na bia\u0142ej li\u015bcie (zdecydowa\u0107, kt\u00f3re z nich usun\u0105\u0107, w przeciwie\u0144stwie do tego, kt\u00f3ry zachowa\u0107) bloki, wyrejestrowuj\u0105c je w pewnym momencie. I musisz to zrobi\u0107 za pomoc\u0105 JavaScript, a nie PHP.<\/p>\n<p>Nie b\u0119d\u0119 wchodzi\u0107 w szczeg\u00f3\u0142y, ale b\u0119dziesz musia\u0142 umie\u015bci\u0107 w kolejce plik JavaScript za\u0142adowany <code>init<\/code>lub <code>enqueue_block_editor_assets<\/code>przechwycony, z zale\u017cno\u015bci\u0105 <code>wp-dom-ready<\/code>i jako. <code>wp-blocks<\/code>Wewn\u0105trz skryptu mo\u017cesz ustawi\u0107 zmienn\u0105 dla tych, kt\u00f3re chcesz usun\u0105\u0107, przestrzegaj\u0105c tych samych zasad dla przestrzeni nazw i nazw blok\u00f3w powy\u017cej. I dla ka\u017cdej nazwy bloku wywo\u0142ujesz funkcj\u0119 <code>unregisterBlockType()<\/code>z <code>wp.blocks<\/code>pakietu. Zwykle trzeba to zrobi\u0107 wewn\u0105trz funkcji, <code>wp.domReady()<\/code>aby upewni\u0107 si\u0119, \u017ce kolejno\u015b\u0107 \u0142adowania skryptu jest poprawna.<\/p>\n<p>Co\u015b takiego:<\/p>\n<pre><code>var removeBlocks = [\n    'core\/paragraph',\n    'core\/heading',\n    'core\/image'\n];\n\u00a0\nwp.domReady(function() {\n    removeBlocks.forEach(function(blockName) {\n        wp.blocks.unregisterBlockType(blockName);\n    });\n});<\/code><\/pre>\n<p>Usuwanie typ\u00f3w blok\u00f3w to jeden ze sposob\u00f3w kontrolowania blok\u00f3w w Gutenbergu. Sp\u00f3jrzmy na inny, by\u0107 mo\u017ce fajniejszy spos\u00f3b kontrolowania blok\u00f3w: szablony blok\u00f3w.<\/p>\n<h2>Szablony blokowe<\/h2>\n<p>Innym sposobem kontrolowania blok\u00f3w Gutenberga w WordPressie jest u\u017cycie szablon\u00f3w blok\u00f3w. WordPress posiada funkcjonalno\u015b\u0107, kt\u00f3ra pozwala na zape\u0142nianie nowych post\u00f3w zestawem predefiniowanych blok\u00f3w. Mo\u017ce to by\u0107 przydatne, aby pom\u00f3c autorom, pokazuj\u0105c im sugesti\u0119 struktury bloku. Mo\u017cesz tak\u017ce zablokowa\u0107 te wst\u0119pnie wype\u0142nione bloki, nie pozwalaj\u0105c autorom na zmian\u0119 kolejno\u015bci lub dodawanie innych blok\u00f3w. Jest to przydatne, gdy chcesz, aby posty mia\u0142y okre\u015blon\u0105 struktur\u0119 i projekt \u2013 na przyk\u0142ad upewniaj\u0105c si\u0119, \u017ce wszystkie posty tego typu maj\u0105 informacje o takiej samej strukturze.<\/p>\n<p>Mo\u017cemy doda\u0107 szablony blok\u00f3w z nowym parametrem do <code>[register_post_type](https:\/\/developer.wordpress.org\/reference\/functions\/register_post_type\/)()<\/code>funkcji s\u0142u\u017c\u0105cej do rejestrowania niestandardowych typ\u00f3w post\u00f3w (uwaga: nowy parametr nie zosta\u0142 jeszcze dodany do dokumentacji). Mo\u017cesz tak\u017ce doda\u0107 lub dostosowa\u0107 parametry istniej\u0105cych typ\u00f3w post\u00f3w, takich jak posty i strony \u2013 zobacz poni\u017cej, jak to zrobi\u0107.<\/p>\n<p>Nowy parametr <code>register_post_type()<\/code>to \u201e <code>template<\/code>&#8222;. Jako warto\u015b\u0107 \u201e <code>template<\/code>&#8221; musisz poda\u0107 tablic\u0119 blok\u00f3w. Ka\u017cdy blok r\u00f3wnie\u017c musi by\u0107 tablic\u0105. Jako minimum musisz poda\u0107 pierwszy element tablicy; nazw\u0119 bloku (np <code>core\/paragraph<\/code>. ). Mo\u017cesz opcjonalnie doda\u0107 drugi element tablicy dla atrybut\u00f3w i trzeci element tablicy dla zagnie\u017cd\u017conych blok\u00f3w (np. Bloki ok\u0142adki, kolumny). Gdy zobaczysz kod, stanie si\u0119 to bardziej zrozumia\u0142e.<\/p>\n<p>Zacznijmy od prostych. Za\u0142\u00f3\u017cmy, \u017ce mamy <code>register_post_type()<\/code>wywo\u0142anie funkcji do zarejestrowania niestandardowego typu posta \u201e <code>book<\/code>&#8222;. Chcemy wype\u0142ni\u0107 wszystkie nowe posty tego typu postem blokiem akapitu z symbolem zast\u0119pczym informuj\u0105cym autora, co powinien napisa\u0107.<\/p>\n<pre><code>add_action('init', function() {\n    register_post_type('book', [\n        'label' =&gt; __('Books', 'txtdomain'),\n        'public' =&gt; true,\n        ...\n        'template' =&gt; [\n            ['core\/paragraph', ['placeholder' =&gt; __('Write your intro here...', 'txtdomain')]],\n        ],\n    ]);\n});<\/code><\/pre>\n<p>Zwr\u00f3\u0107 uwag\u0119, \u017ce tablica atrybut\u00f3w (zawieraj\u0105ca symbol zast\u0119pczy) jest opcjonalna. Teraz, z tym parametrem \u201eszablon&#8221; za ka\u017cdym razem, gdy tworzymy nowe posty, zostanie on utworzony z blokiem akapitu, kt\u00f3ry zawiera symbol zast\u0119pczy \u201eTutaj napisz intro\u2026&#8221;.<\/p>\n<p>Sp\u00f3jrzmy na bardziej skomplikowany przyk\u0142ad: zagnie\u017cd\u017cone bloki. Powiedzmy, \u017ce chcemy doda\u0107 blok ok\u0142adki, kt\u00f3ry ma blok nag\u0142\u00f3wka, akapit i przycisk w \u015brodku, wyr\u00f3wnane do \u015brodka. Tytu\u0142 i akapit b\u0119d\u0105 mia\u0142y symbol zast\u0119pczy:<\/p>\n<pre><code>'template' =&gt; [\n    ['core\/cover', ['align' =&gt; 'full', 'overlayColor' =&gt; 'blue-profile'], [\n        ['core\/heading', ['align' =&gt; 'center', 'placeholder' =&gt; __('Call to action title', 'txtdomain')]],\n        ['core\/paragraph', ['align' =&gt; 'center', 'placeholder' =&gt; __('Your text here', 'txtdomain')]],\n        ['core\/button', ['align' =&gt; 'center']]\n    ]],\n],<\/code><\/pre>\n<p>Poni\u017cszy obrazek pokazuje, co otrzymamy, tworz\u0105c nowe posty ksi\u0105\u017ckowe. Wygl\u0105da mniej onie\u015bmielaj\u0105co ni\u017c puste p\u0142\u00f3tno, prawda?<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152040-61e4d330dc012.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152040-61e4d330dc012.png\" alt=\"Jak kontrolowa\u0107 bloki Gutenberga dla post\u00f3w w WordPress: Wy\u0142\u0105cz bloki i szablony blok\u00f3w\" ><\/a><\/p>\n<p>Pami\u0119taj, \u017ce atrybuty s\u0105 r\u00f3\u017cne w ka\u017cdym typie bloku i mog\u0105 r\u00f3wnie\u017c r\u00f3\u017cni\u0107 si\u0119 w twojej konfiguracji. W powy\u017cszym przyk\u0142adzie kodu dodaj\u0119 dwa atrybuty do bloku Cover; wyr\u00f3wnanie bloku do \u201ePe\u0142nej szeroko\u015bci&#8221; i na\u0142o\u017cenie koloru na predefiniowany kolor z niestandardowej palety kolor\u00f3w.<\/p>\n<p>Wyr\u00f3wnania blok\u00f3w \u201eSzeroka szeroko\u015b\u0107&#8221; i \u201ePe\u0142na szeroko\u015b\u0107&#8221; musz\u0105 by\u0107 specjalnie obs\u0142ugiwane w Twoim motywie. Mam post, kt\u00f3ry wyja\u015bnia, <a href=\"https:\/\/awhitepixel.com\/blog\/developer-guide-using-wordpress-gutenberg-for-creating-frontpages-and-landing-pages\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jak doda\u0107 wsparcie w swoim motywie dla dodatkowych wyr\u00f3wna\u0144 blok\u00f3w,<\/a> je\u015bli nie jeste\u015b zaznajomiony z tym. Po drugie, moim motywem jest dostarczenie niestandardowej palety kolor\u00f3w Gutenberga, w kt\u00f3rej jeden z kolor\u00f3w palety nazywa si\u0119 \u201eprofil niebieski&#8221;. To prawdopodobnie nie b\u0119dzie istnie\u0107 w twoim kodzie. Powy\u017cszy link wyja\u015bnia to r\u00f3wnie\u017c, je\u015bli nie znasz r\u00f3wnie\u017c niestandardowej palety Gutenberga.<\/p>\n<p>Powodem, dla kt\u00f3rego zdecydowa\u0142em si\u0119 poda\u0107 kolor nak\u0142adki jako atrybut, jest zachowanie bloku Cover. Kiedy tworzysz blok ok\u0142adki, zaczyna si\u0119 od pytania o wyb\u00f3r mi\u0119dzy ustawieniem obrazu t\u0142a lub wybraniem koloru t\u0142a. Dop\u00f3ki autor nie wybierze aktywnie jednego z nich, blok Ok\u0142adka ukrywa wszelkie zawarte w nim tre\u015bci (nag\u0142\u00f3wek, akapit i przycisk, kt\u00f3ry dodali\u015bmy)! Po prostu wyskocz\u0105 nagle po wybraniu obrazu lub koloru. Dlatego, aby unikn\u0105\u0107 nieporozumie\u0144, wst\u0119pnie wybra\u0142em kolor t\u0142a, aby autor od razu widzia\u0142 wszystkie bloki w \u015brodku. W ka\u017cdym razie kolor mo\u017cna zmieni\u0107 w Inspektorze (pasku bocznym).<\/p>\n<h3>Blokowanie szablonu bloku<\/h3>\n<p>Dzi\u0119ki dostarczonemu szablonowi bloku autor mo\u017ce zmieni\u0107 i usun\u0105\u0107 dowolne wst\u0119pnie wype\u0142nione bloki, a tak\u017ce doda\u0107 nowe bloki w dowolnym miejscu. Je\u015bli chcesz tego unikn\u0105\u0107, istnieje inny parametr do <code>register_post_type()<\/code>: &#8217; <code>template_lock<\/code>&#8217;.<\/p>\n<p>Parametr \u201e <code>template_lock<\/code>&#8221; przyjmuje dwie warto\u015bci; &#8217; <code>all<\/code>&#8217; lub &#8217; <code>insert<\/code>&#8217;.<\/p>\n<p>Ustawienie &#8217; <code>template_lock<\/code>&#8217; na &#8217; <code>all<\/code>&#8217; ca\u0142kowicie blokuje autorom przestawianie, usuwanie lub dodawanie nowych blok\u00f3w do szablonu bloku. Mog\u0105 jedynie edytowa\u0107 zawarto\u015b\u0107 i ustawienia blok\u00f3w zdefiniowanych jako szablon bloku. Jest to przydatne w przypadkach, gdy chcesz, aby wszystkie typy post\u00f3w sk\u0142ada\u0142y si\u0119 z tych samych blok\u00f3w w tej samej kolejno\u015bci \u2013 nie wi\u0119cej i nie mniej.<\/p>\n<p>U\u017cycie \u201e <code>insert<\/code>&#8221; dla \u201e <code>template_lock<\/code>&#8221; umo\u017cliwia autorom zmian\u0119 kolejno\u015bci blok\u00f3w w szablonie bloku. Ale autorzy nadal nie mog\u0105 dodawa\u0107 nowych blok\u00f3w ani usuwa\u0107 \u017cadnych blok\u00f3w.<\/p>\n<p>Oto jak ca\u0142kowicie zablokowa\u0107 szablon bloku dla niestandardowego typu posta \u201e <code>book<\/code>&#8222;:<\/p>\n<pre><code>add_action('init', function() {\n    register_post_type('book', [\n        'label' =&gt; __('Books', 'txtdomain'),\n        'public' =&gt; true,\n        ...\n        'template' =&gt; [\n            ['core\/cover', ['align' =&gt; 'full', 'overlayColor' =&gt; 'blue-profile'], [\n                ['core\/heading', ['align' =&gt; 'center', 'placeholder' =&gt; __('Call to action title', 'txtdomain')]],\n                ['core\/paragraph', ['align' =&gt; 'center', 'placeholder' =&gt; __('Your text here', 'txtdomain')]],\n                ['core\/button', ['align' =&gt; 'center']]\n            ]],\n        ],\n        'template_lock' =&gt; 'all',\n    ]);\n});<\/code><\/pre>\n<p>Korzystanie z zablokowanego szablonu bloku w Gutenbergu b\u0119dzie wygl\u0105da\u0107 jak poni\u017cej. Zauwa\u017c, \u017ce brakuje ikon akcji do zmiany kolejno\u015bci blok\u00f3w, a tak\u017ce do usuwania link\u00f3w blok\u00f3w w menu. Nie ma te\u017c ikon akcji do dodawania nowych blok\u00f3w (ma\u0142y \u201e+&#8221;) nigdzie.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152040-61e4d33596f0b.gif\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152040-61e4d33596f0b.gif\" alt=\"Jak kontrolowa\u0107 bloki Gutenberga dla post\u00f3w w WordPress: Wy\u0142\u0105cz bloki i szablony blok\u00f3w\" ><\/a><\/p>\n<h3>Dostosowywanie szablon\u00f3w blok\u00f3w do istniej\u0105cych typ\u00f3w post\u00f3w<\/h3>\n<p>Je\u015bli chcesz u\u017cywa\u0107 szablon\u00f3w blokowych w postach lub stronach, mo\u017cesz to r\u00f3wnie\u017c zrobi\u0107. Pod\u0142\u0105cz funkcj\u0119 do <code>init<\/code>i u\u017cyj <code>[get_post_type_object](https:\/\/developer.wordpress.org\/reference\/functions\/get_post_type_object\/)()<\/code>. Podaj typ posta, kt\u00f3ry chcesz jako parametr (albo \u201e <code>post<\/code>&#8221; albo \u201e <code>page<\/code>&#8222;). Zwraca obiekt, do kt\u00f3rego mo\u017cna przypisa\u0107 w\u0142a\u015bciwo\u015bci \u201e <code>template<\/code>&#8221; i \u201e <code>template_lock<\/code>&#8222;.<\/p>\n<p>To jest przyk\u0142ad dodania tego samego szablonu bloku i w\u0142a\u015bciwo\u015bci blokady jak powy\u017cej na stronach:<\/p>\n<pre><code>add_action('init', function() {\n    $page_post_type = get_post_type_object('page');\n    $page_post_type-&gt;template = [\n        ['core\/cover', ['align' =&gt; 'full', 'overlayColor' =&gt; 'blue-profile'], [\n            ['core\/heading', ['align' =&gt; 'center', 'placeholder' =&gt; __('Call to action title', 'txtdomain')]],\n            ['core\/paragraph', ['align' =&gt; 'center', 'placeholder' =&gt; __('Your text here', 'txtdomain')]],\n            ['core\/button', ['align' =&gt; 'center']]\n        ]],\n    ];\n    $page_post_type-&gt;template_lock = 'all';\n});<\/code><\/pre>\n<h2>Wniosek<\/h2>\n<p>W tym po\u015bcie dowiedzieli\u015bmy si\u0119, jak osi\u0105gn\u0105\u0107 wi\u0119ksz\u0105 kontrol\u0119 nad blokami w edytorze WordPress Gutenberg. Jest to wiele korzy\u015bci, zw\u0142aszcza w po\u0142\u0105czeniu z niestandardowymi typami post\u00f3w, kt\u00f3re musz\u0105 mie\u0107 okre\u015blon\u0105 struktur\u0119. Korzystanie z powy\u017cszych technik pomo\u017ce Ci bardziej usprawni\u0107 proces, zar\u00f3wno jako webmaster (pomagaj\u0105c ludziom pisa\u0107 lepsze posty), jak i jako programista motyw\u00f3w (zapewniaj\u0105c wsp\u00f3lny projekt). Zablokowane szablony blok\u00f3w mog\u0105 by\u0107 innym rozwi\u0105zaniem ni\u017c niestandardowe szablony post\u00f3w i meta post\u00f3w.<\/p>\n<p>Dostosowywanie szablon\u00f3w blok\u00f3w jest w tej chwili do\u015b\u0107 ukryt\u0105 funkcj\u0105 Gutenberga. Ale spodziewam si\u0119, \u017ce to si\u0119 zmieni wraz z rozwojem Gutenberga i uzyskaniem bardziej znajomego miejsca w WordPressie.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wyja\u015bnia, jak wy\u0142\u0105czy\u0107 okre\u015blone bloki w WordPress Gutenberg oraz jak dodawa\u0107 i definiowa\u0107 szablony blok\u00f3w dla typ\u00f3w post\u00f3w. Wszystko w PHP.<\/p>\n","protected":false},"author":1,"featured_media":224326,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,721,940,940,919,897,919,1110,815,836,836,845,845,866,866,815],"tags":[1169],"class_list":{"0":"post-233823","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-deweloper","9":"category-gutenberg-7","11":"category-inny","12":"category-kod","14":"category-n-a","15":"category-wtyczki","16":"category-przewodnik-dla-poczatkujacych","18":"category-samouczki","20":"category-wordpress-7","23":"tag-affiai-pl"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=233823"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233823\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/224326"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=233823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=233823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=233823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}