{"id":233320,"date":"2023-02-11T13:12:00","date_gmt":"2023-02-11T10:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233320"},"modified":"2022-11-10T20:28:10","modified_gmt":"2022-11-10T17:28:10","slug":"podstawy-programowania-dla-wordpress-gutenberg-dla-poczatkujacych","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/podstawy-programowania-dla-wordpress-gutenberg-dla-poczatkujacych\/","title":{"rendered":"Podstawy programowania dla WordPress Gutenberg dla pocz\u0105tkuj\u0105cych"},"content":{"rendered":"\n<p>Ten post ma na celu pom\u00f3c Ci zrozumie\u0107 kluczowe koncepcje tworzenia nowego edytora w WordPress; Gutenberga. Gutenberg jest wci\u0105\u017c do\u015b\u0107 nowy w momencie pisania tego. I podobnie jak w przypadku wszystkich nowych technologii w fazie narodzin, niestety brakuje dokumentacji i standard\u00f3w.<\/p>\n<p>Witryna z dokumentacj\u0105 WordPressa ma du\u017c\u0105 sekcj\u0119 po\u015bwi\u0119con\u0105 Gutenbergowi dla programist\u00f3w; zwany <a href=\"https:\/\/developer.wordpress.org\/block-editor\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">podr\u0119cznikiem redaktora Gutenberga<\/a>. Zawiera ju\u017c sporo informacji. Ale mo\u017ce to by\u0107 troch\u0119 myl\u0105ce lub onie\u015bmielaj\u0105ce dla kogo\u015b, kto jest zupe\u0142nie nowy w technologiach opartych na Javascript. Dla programist\u00f3w skoncentrowanych na PHP, kt\u00f3rzy mog\u0105 mie\u0107 tylko podstawow\u0105 wiedz\u0119 na temat Javascript\/jQuery, nowe technologie WordPressa mog\u0105 wydawa\u0107 si\u0119 onie\u015bmielaj\u0105ce. Ale zaufaj mi, kiedy nauczysz si\u0119 kluczowych poj\u0119\u0107, zobaczysz, jakie nowe mo\u017cliwo\u015bci masz teraz jako programista WordPress.<\/p>\n<p>Zacznijmy od absolutnych podstaw. Jakich j\u0119zyk\u00f3w programowania i narz\u0119dzi b\u0119dziesz potrzebowa\u0107 lub kt\u00f3rych musisz si\u0119 nauczy\u0107, aby najlepiej rozwija\u0107 si\u0119 dla Gutenberga?<\/p>\n<h2>J\u0119zyk i biblioteki, kt\u00f3re musisz zna\u0107<\/h2>\n<p>Kr\u00f3tka odpowied\u017a na pytanie, jakiego j\u0119zyka musisz u\u017cywa\u0107 do programowania w Gutenberg, to: JavaScript. Jednak w \u015bwiecie JavaScript istnieje wiele poj\u0119\u0107, rozszerze\u0144 i narz\u0119dzi, o kt\u00f3rych powiniene\u015b wiedzie\u0107.<\/p>\n<p>Przede wszystkim chodzi o wersj\u0119 Javascript. Istnieje oficjalna standaryzacja Javascript; ECMAScript. ECMAScript 5 (cz\u0119sto skracany do <strong>ES5<\/strong>) pojawi\u0142 si\u0119 oko\u0142o 10 lat temu i jest wersj\u0105 Javascript, z kt\u00f3r\u0105 wi\u0119kszo\u015b\u0107 z nas, deweloper\u00f3w, jest zaznajomiona. Nast\u0119pnie mamy ECMAScript 6 (cz\u0119sto skracany do <strong>ES6<\/strong> ), kt\u00f3ry ukaza\u0142 si\u0119 w 2015 roku. Niekt\u00f3rzy ludzie odnosz\u0105 si\u0119 do tej wersji jako ES2015. I wreszcie <strong>ESNext<\/strong>, kt\u00f3ra jest dynamiczn\u0105 nazw\u0105 obejmuj\u0105c\u0105 nadchodz\u0105c\u0105 wersj\u0119, zawieraj\u0105c\u0105 propozycje, kt\u00f3re mamy nadziej\u0119 znale\u017a\u0107 si\u0119 w ka\u017cdej nast\u0119pnej standardowej wersji JavaScript.<\/p>\n<p>By\u0107 mo\u017ce my\u015blisz w stylu \u201ewi\u0119c to wszystko dobrze, a nowsze wersje JavaScript to po prostu wi\u0119cej funkcji. Wi\u0119c u\u017cyj\u0119 tylko najnowszego&quot;. Ale jest bardzo wa\u017cna rzecz, kt\u00f3r\u0105 musisz wiedzie\u0107 o wersjach JavaScript, a jest to nast\u0119puj\u0105ca: wi\u0119kszo\u015b\u0107 dzisiejszych przegl\u0105darek rozumie tylko ES5.<\/p>\n<p>Oznacza to, \u017ce je\u015bli chcesz napisa\u0107 JavaScript w ES6 lub ESNext, musisz skonfigurowa\u0107 narz\u0119dzia, kt\u00f3re przekszta\u0142c\u0105 Tw\u00f3j kod w ES5, aby przegl\u0105darki mog\u0142y go zrozumie\u0107. Ale zanim zaczniesz my\u015ble\u0107 o ca\u0142kowitym pomini\u0119ciu nauki ES6 i ESNext, pami\u0119taj, \u017ce ES5 ma 10 lat. I b\u0119dzie to wymaga\u0142o napisania du\u017co wi\u0119cej kodu. B\u0119dzie te\u017c znacznie mniej czytelny i bardziej z\u0142o\u017cony ni\u017c gdyby\u015b napisa\u0142 go w ES6 lub ESNext.<\/p>\n<p>Ponadto do koncepcji Gutenberga chcesz r\u00f3wnie\u017c u\u017cy\u0107 <strong>JSX<\/strong> \u2013 rozszerzenia sk\u0142adni do JavaScript. JSX to tak\u017ce j\u0119zyk, kt\u00f3rego przegl\u0105darki nie mog\u0105 zrozumie\u0107 bez jego przekszta\u0142cenia.<\/p>\n<h3>Po co wi\u0119c zawraca\u0107 sobie g\u0142ow\u0119 ES6, ESNext czy JSX?<\/h3>\n<p>Je\u015bli nadal nie jeste\u015b przekonany, \u017ce ES6\/ESNext jest wart dodatkowego kroku w celu jego przekszta\u0142cenia, pozw\u00f3l, \u017ce poka\u017c\u0119 ci por\u00f3wnanie kodu. W ES6 i JSX mo\u017cesz napisa\u0107 to w celu zwr\u00f3cenia prostego akapitu; z klas\u0105 i dynamicznym wyj\u015bciem ze zmiennej;<\/p>\n<pre><code>return &lt;p className=\"example\"&gt;Hello, my name is {name}&lt;\/p&gt;;<\/code><\/pre>\n<p>Dla tych z Was, kt\u00f3rzy s\u0105 w tym nowi i my\u015bl\u0105, \u017ce zapomnia\u0142em cytat\u00f3w \u2013 nie, nie. Na tym polega prostota JSX. Por\u00f3wnajmy powy\u017csze z tym, jak pisa\u0142by\u015b za pomoc\u0105 bibliotek JavaScript ES5 i WordPress:<\/p>\n<pre><code>return wp.element.createElement(\n    'p',\n    { className: 'example' },\n    'Hello, my name is ' + name\n);<\/code><\/pre>\n<p>Ca\u0142y powy\u017cszy kod jest wymagany do wypisania tego, co ES6 i JSX mog\u0105 zrobi\u0107 w pojedynczej, bardzo \u0142atwej do odczytania linii! Wyobra\u017a sobie budowanie bardziej z\u0142o\u017conego interfejsu u\u017cytkownika ze zdarzeniami i warunkami warunkowymi, gdy tylko prosty akapit wymaga tego niewygodnego fragmentu kodu.<\/p>\n<p>Przekonany? Dobrze!<\/p>\n<h3>Narz\u0119dzia do transformacji i React JS<\/h3>\n<p>Najpopularniejszym narz\u0119dziem u\u017cywanym przez WordPressa do przekszta\u0142cania ES6\/ESNext jest <a href=\"https:\/\/babeljs.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Babel<\/a>. Zwykle u\u017cywa\u0142by\u015b Babel jako wtyczki do <a href=\"https:\/\/webpack.js.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Webpack<\/a>, kt\u00f3ry jest narz\u0119dziem, kt\u00f3re \u0142\u0105czy i minimalizuje twoje pliki JavaScript. Oba narz\u0119dzia u\u017cywaj\u0105 <a href=\"https:\/\/nodejs.org\/en\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Node.js<\/a>, co daje kilka narz\u0119dzi do uruchamiania skrypt\u00f3w dla Webpack i Babel w wierszu polece\u0144. Je\u015bli brzmi to myl\u0105c, mam post, kt\u00f3ry <a href=\"https:\/\/awhitepixel.com\/blog\/guide-in-setting-up-a-development-environment-for-gutenberg-with-npm-webpack-and-babel\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">szczeg\u00f3\u0142owo wyja\u015bnia, jak skonfigurowa\u0107 wszystkie te narz\u0119dzia do<\/a> rozwoju Gutenberga.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153969-61e5175b816e1.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-153969-61e5175b816e1.png\" alt=\"Podstawy programowania dla WordPress Gutenberg dla pocz\u0105tkuj\u0105cych\" ><\/a><\/p>\n<p>Drug\u0105 rzecz\u0105, kt\u00f3r\u0105 musisz wiedzie\u0107 o technologiach, jest to, \u017ce Gutenberg opiera si\u0119 na warstwie abstrakcji na wierzchu <strong>React JS<\/strong>. <a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">React JS<\/a> to biblioteka JavaScript o otwartym kodzie \u017ar\u00f3d\u0142owym utrzymywana przez Facebooka i zosta\u0142a wydana oko\u0142o roku 2013. Poniewa\u017c React istnieje ju\u017c od jakiego\u015b czasu, istnieje wiele samouczk\u00f3w, przewodnik\u00f3w i dokumentacji dla tej biblioteki. Oficjalna strona Reacta zawiera dobry, szczeg\u00f3\u0142owy <a href=\"https:\/\/reactjs.org\/tutorial\/tutorial.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">samouczek<\/a> dla nowych u\u017cytkownik\u00f3w Reacta. Zdecydowanie nie musisz by\u0107 ekspertem w React, aby tworzy\u0107 dla Gutenberga, ale podstawy tego, jak dzia\u0142a z komponentami i stanami, pomog\u0105 ci bardzo w zrozumieniu Gutenberga.<\/p>\n<h3>Podsumowuj\u0105c:<\/h3>\n<ul>\n<li>Nauka <strong>React JS<\/strong> pozwoli zrozumie\u0107, jak rozwija\u0107 si\u0119 dla Gutenberga. Zw\u0142aszcza je\u015bli chcesz tworzy\u0107 w\u0142asne niestandardowe bloki lub dostosowywa\u0107 istniej\u0105ce.<\/li>\n<li>Mo\u017cesz to zrobi\u0107 u\u017cywaj\u0105c tylko ES5 Javascript, ale zdecydowanie zaleca si\u0119 nauk\u0119 <strong>ES6<\/strong>, <strong>ESNext<\/strong> i <strong>JSX<\/strong>.<\/li>\n<li>Zapoznaj si\u0119 z potrzebnymi narz\u0119dziami, aby przekszta\u0142ci\u0107 sw\u00f3j kod ES6\/ESNext\/JSX. Te narz\u0119dzia to <strong>npm<\/strong>, <strong>Webpack<\/strong> i <strong>Babel<\/strong>.<\/li>\n<\/ul>\n<h2>Nowy spos\u00f3b przechowywania tre\u015bci post\u00f3w i dlaczego<\/h2>\n<p>Jedn\u0105 z najwi\u0119kszych zalet Gutenberga jest odej\u015bcie od sta\u0142ego HTML w tre\u015bci post\u00f3w. WordPress, przed Gutenbergiem i wi\u0119kszo\u015b\u0107 internetowych CMS-\u00f3w przechowuje tre\u015b\u0107 artyku\u0142\u00f3w w czystym HTML. W przypadku prostych tre\u015bci (tytu\u0142y i akapity) generalnie nie jest to problem. Ale mo\u017ce by\u0107 wi\u0119kszy problem w przypadku bardziej z\u0142o\u017conej i dynamicznej zawarto\u015bci bogatej.<\/p>\n<p>Ka\u017cdy CMS, kt\u00f3ry zezwala na dynamiczn\u0105 zawarto\u015b\u0107 w tre\u015bci artyku\u0142u, napotka problemy z zapisaniem tego jako prawid\u0142owego kodu HTML. Mo\u017ce to by\u0107 dowolny obraz, kt\u00f3ry odwo\u0142uje si\u0119 do jego identyfikatora w systemie zamiast pe\u0142nego adresu URL. Lub wid\u017cet, kt\u00f3ry dynamicznie wy\u015bwietla najnowsze posty w danej kategorii. Zwykle zostanie to rozwi\u0105zane przez wypisanie niestandardowego zaszyfrowanego kodu HTML, kt\u00f3ry nie ma sensu normalnie wyprowadza\u0107. A nast\u0119pnie pozw\u00f3l parserowi CMS zaj\u0105\u0107 si\u0119 przekszta\u0142caniem tych element\u00f3w HTML w co\u015b znacz\u0105cego lub dynamicznego. Wad\u0105 tego jest to, \u017ce je\u015bli przeniesiesz swoje tre\u015bci do innego CMS, cz\u0119sto spowoduje to brzydki kod HTML. Tre\u015b\u0107 by\u0142aby wype\u0142niona nieprzeanalizowanym kodem HTML, kt\u00f3ry trzeba r\u0119cznie wyczy\u015bci\u0107. W\u0142a\u015bnie t\u0119 kwesti\u0119 chce rozwi\u0105za\u0107 Gutenberg.<\/p>\n<p>Dzi\u0119ki Gutenberg WordPress zdecydowa\u0142 si\u0119 zapisywa\u0107 dodatkowe i dynamiczne informacje jako komentarze HTML. Komentarze HTML nigdy nie s\u0105 widoczne dla u\u017cytkownik\u00f3w w witrynie i zasadniczo wszystko jest dozwolone w bloku komentarzy. Komentarz HTML zaczyna si\u0119 <code>&lt;!--<\/code>i ko\u0144czy na <code>--&gt;<\/code>, a Gutenberg przechowuje dane w okre\u015blonej strukturze w formacie JSON. Ka\u017cdy blok w Gutenbergu jest otoczony pocz\u0105tkowym komentarzem HTML i zamykaj\u0105cym komentarzem HTML po nim.<\/p>\n<h3>Nowy spos\u00f3b przechowywania tre\u015bci post\u00f3w<\/h3>\n<p>Nie b\u0119d\u0119 szczeg\u00f3\u0142owo omawia\u0142 struktury blok\u00f3w komentarzy \u2013 <a href=\"https:\/\/developer.wordpress.org\/block-editor\/key-concepts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">szczeg\u00f3\u0142owy przewodnik<\/a> na ten temat znajdziesz w Podr\u0119czniku edytora WordPress. Ale jako przyk\u0142ad, prosty akapit w tre\u015bci posta Gutenberga zostanie zapisany w bazie danych jako:<\/p>\n<pre><code>&lt;!-- wp:paragraph --&gt;\n&lt;p&gt;Lorem ipsum dolor sit amet consectetur adipiscing elit.&lt;\/p&gt;\n&lt;!-- \/wp:paragraph --&gt;<\/code><\/pre>\n<p>Je\u015bli chodzi o zawarto\u015b\u0107 dynamiczn\u0105, zwykle w og\u00f3le nie zostanie wy\u015bwietlony \u017caden kod HTML. Wszystkie informacje, kt\u00f3re WordPress potrzebuje, aby zrozumie\u0107, co robi ten blok, znajduj\u0105 si\u0119 w komentarzach HTML. W ten spos\u00f3b Gutenberg przechowuje blok \u201eNajnowszych post\u00f3w&#8221;:<\/p>\n<pre><code>&lt;!-- wp:latest-posts {\"categories\":\"17\",\"displayPostContent\":true,\"excerptLength\":30,\"postLayout\":\"grid\"} \/--&gt;<\/code><\/pre>\n<p>Poniewa\u017c wszystko jest komentarzem HTML, przeniesienie post\u00f3w do innego WordPressa bez Gutenberga lub innego systemu CMS sprawi, \u017ce \u017caden brzydki, nieprzeanalizowany kod HTML nie zostanie wypluty. Zostanie po prostu zignorowany i pomini\u0119ty.<\/p>\n<p>Jak zapewne ju\u017c si\u0119 zorientowa\u0142e\u015b, bloki komentarzy zaczynaj\u0105 si\u0119 od nazwy bloku, poprzedzonej &#8217; <code>wp<\/code>&#8217;. Je\u015bli istniej\u0105 jakie\u015b ustawienia niestandardowe, zostan\u0105 one wyprowadzone po nazwie w formacie JSON, jak wida\u0107 na przyk\u0142adzie bloku Ostatnie posty. Gutenberg nazywa je atrybutami, a ta koncepcja jest czym\u015b, z czym bardzo dobrze si\u0119 zapoznasz, kiedy zaczniesz uczy\u0107 si\u0119 rozwija\u0107 dla Gutenberga.<\/p>\n<p><strong>Warto wiedzie\u0107:<\/strong><br \/>\nJe\u015bli chcesz dok\u0142adniej przyjrze\u0107 si\u0119, jak zapisywana jest nowa tre\u015b\u0107 posta, mo\u017cesz zajrze\u0107 do <code>wp_posts<\/code>tabeli w bazie danych. Jest jeszcze jedna \u0142atwiejsza metoda podgl\u0105dania pe\u0142nej warto\u015bci bazy danych z poziomu szablon\u00f3w WordPress. W swoim pojedynczym szablonie w p\u0119tli, po prostu u\u017cyj \u201e <code>echo get_the_content()<\/code>&#8222;. U\u017cycie normalnego \u201e <code>the_content()<\/code>&#8221; spowoduje wy\u015bwietlenie przeanalizowanej tre\u015bci posta, ale powt\u00f3rzenie warto\u015bci tre\u015bci spowoduje wy\u015bwietlenie dok\u0142adnie tego, co jest przechowywane w bazie danych. Mo\u017cesz u\u017cy\u0107 narz\u0119dzia Inspect lub wy\u015bwietli\u0107 \u017ar\u00f3d\u0142o w przegl\u0105darce Chrome lub Firefox, aby zobaczy\u0107 bloki komentarzy.<\/p>\n<h2>Co Ty jako programista mo\u017cesz zrobi\u0107 w Gutenberg<\/h2>\n<p>Masz kilka opcji dostosowywania motyw\u00f3w lub wtyczek do Gutenberga. Poni\u017cej wymieniono najcz\u0119stsze dostosowania, kt\u00f3re prawdopodobnie wykonasz jako programista.<\/p>\n<h3>Rozszerz i dostosuj istniej\u0105ce bloki<\/h3>\n<p>WordPress Gutenberg zawiera du\u017cy pakiet typ\u00f3w blok\u00f3w i mo\u017cesz je rozszerzy\u0107. Mo\u017cesz tak\u017ce usun\u0105\u0107 niekt\u00f3re z nich lub zdecydowa\u0107 si\u0119 w niekt\u00f3rych przypadkach, aby zezwoli\u0107 lub usun\u0105\u0107 tylko niekt\u00f3re z nich.<\/p>\n<p>Najpopularniejsz\u0105 metod\u0105 rozszerzania bloku jest <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/filters\/block-filters\/#block-style-variations\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dodawanie niestandardowych styl\u00f3w bloku<\/a> \u2013 kt\u00f3re s\u0105 odmianami stylu bloku. Style blokowe nie s\u0105 tak powszechne w domy\u015blnym WordPressie, ale s\u0105 pewne. Sp\u00f3jrz na blok Cytat. W edytorze Gutenberg b\u0119dziesz mia\u0142 pole na prawym pasku bocznym o nazwie \u201eStyle&#8221;.<\/p>\n<p>Innym sposobem dostosowywania istniej\u0105cych blok\u00f3w jest u\u017cycie filtr\u00f3w. Prawdopodobnie znasz filtry u\u017cywaj\u0105ce PHP w WordPressie, ale w Gutenbergu s\u0105 teraz <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/filters\/block-filters\/#filters\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">filtry oparte na JavaScript na blokach<\/a>. Na przyk\u0142ad mo\u017cesz doda\u0107 w\u0142asne niestandardowe atrybuty (ustawienia) do wszystkich lub okre\u015blonych typ\u00f3w blok\u00f3w lub filtrowa\u0107 spos\u00f3b ich zapisywania lub wyprowadzania.<\/p>\n<p>Mo\u017cesz tak\u017ce manipulowa\u0107 kategoriami blok\u00f3w, a tak\u017ce usuwa\u0107 lub zezwala\u0107 na okre\u015blone bloki w okre\u015blonych sytuacjach. Mo\u017cesz te\u017c na przyk\u0142ad upewni\u0107 si\u0119, \u017ce tylko kilka typ\u00f3w blok\u00f3w jest dozwolonych dla niestandardowego typu postu.<\/p>\n<h3>Tw\u00f3rz w\u0142asne niestandardowe bloki<\/h3>\n<p>Tworzenie niestandardowych blok\u00f3w to prawdopodobnie pierwsza my\u015bl, kt\u00f3r\u0105 ma wi\u0119kszo\u015b\u0107 programist\u00f3w WordPress. Domy\u015blne bloki w WordPressie mog\u0105 przej\u015b\u0107 d\u0142ug\u0105 drog\u0119, ale je\u015bli budujesz bardziej z\u0142o\u017cony motyw lub wtyczk\u0119, prawdopodobnie masz okre\u015blone potrzeby. Na przyk\u0142ad u\u017cycie Gutenberga do stworzenia \u0142adnie wygl\u0105daj\u0105cej strony g\u0142\u00f3wnej ze skr\u00f3tami do tre\u015bci i zawarto\u015bci dynamicznej. Mo\u017cliwe jest osi\u0105gni\u0119cie najwi\u0119kszej personalizacji za pomoc\u0105 opcji klasy CSS, kt\u00f3ra istnieje dla wszystkich blok\u00f3w. Ale to nie jest szczeg\u00f3lnie przyjazne dla u\u017cytkownika.<\/p>\n<p>Pisanie w\u0142asnych niestandardowych blok\u00f3w jest prawdopodobnie najtrudniejsze w dostosowywaniu motywu lub wtyczki do Gutenberga. Ale mo\u017ce to by\u0107 r\u00f3wnie\u017c najbardziej satysfakcjonuj\u0105ce! Nie tylko b\u0119dziesz m\u00f3g\u0142 tworzy\u0107 bloki, kt\u00f3re dzia\u0142aj\u0105 i wygl\u0105daj\u0105 dok\u0142adnie tak, jak chcesz \u2013 ale to tak\u017ce \u015bwietny spos\u00f3b na szybkie poznanie nowej technologii opartej na Javascript.<\/p>\n<h3>Upewnij si\u0119, \u017ce Tw\u00f3j motyw jest gotowy do Gutenberg<\/h3>\n<p>Je\u015bli jeste\u015b programist\u0105 motyw\u00f3w WordPress, powiniene\u015b mie\u0107 \u015bwiadomo\u015b\u0107, \u017ce Tw\u00f3j motyw mo\u017ce wymaga\u0107 wielu ustawie\u0144 dla Gutenberga, zw\u0142aszcza w postaci <code>add_theme_support()<\/code>. Podr\u0119cznik WordPressa zawiera <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/themes\/theme-support\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dobry przegl\u0105d<\/a> wszystkich motyw\u00f3w, kt\u00f3re musisz wzi\u0105\u0107 pod uwag\u0119, aby Tw\u00f3j motyw by\u0142 gotowy do Gutenberga.<\/p>\n<p>Domy\u015blnie WordPress obs\u0142uguje wi\u0119kszo\u015b\u0107 stylizacji domy\u015blnych blok\u00f3w, wi\u0119c nie musisz si\u0119 zbytnio martwi\u0107 o stylizowanie ich w swoim motywie. Ale tw\u00f3rcy motyw\u00f3w s\u0105 zwykle bardziej wybredni, je\u015bli chodzi o ich projektowanie i stylizacj\u0119. Wi\u0119c prawdopodobnie b\u0119dziesz musia\u0142 dostosowa\u0107 lub doda\u0107 stylizacj\u0119 blokow\u0105. Mo\u017cesz doda\u0107 style edytora tylko do frontendu, tylko do edytora lub do obu. Podr\u0119cznik WordPress Gutenberg zawiera <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/themes\/theme-support\/#editor-styles\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">przegl\u0105d styl\u00f3w edytora<\/a> i domy\u015blnych styl\u00f3w blok\u00f3w.<\/p>\n<p>Istnieje r\u00f3wnie\u017c koncepcja <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-templates\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">szablon\u00f3w blok\u00f3w,<\/a> w kt\u00f3rych mo\u017cna wst\u0119pnie zdefiniowa\u0107, jakie bloki powinny pojawia\u0107 si\u0119 w postach. Szablony blok\u00f3w mog\u0105 by\u0107 u\u017cywane jako symbole zast\u0119pcze, aby pom\u00f3c edytorowi w wype\u0142nianiu blok\u00f3w. Ale mo\u017ce by\u0107 r\u00f3wnie\u017c u\u017cyty do zdefiniowania sta\u0142ego zestawu blok\u00f3w i pozycji.<\/p>\n<p>I wreszcie, dost\u0119pne s\u0105 funkcje do pracy z parserem Gutenberga i jak wyodr\u0119bnia\u0107 bloki z post\u00f3w. Poniewa\u017c wszystkie tre\u015bci s\u0105 zapisywane z pe\u0142n\u0105 informacj\u0105 o rodzaju tre\u015bci, mo\u017cesz \u0142atwo wyodr\u0119bni\u0107 okre\u015blone cz\u0119\u015bci tre\u015bci postu. Dobrym przyk\u0142adem jest wyodr\u0119bnienie pierwszego akapitu post\u00f3w do wy\u015bwietlenia jako fragment. Bardzo przydatn\u0105 funkcj\u0105 PHP dla tej koncepcji jest <code>[parse_blocks](https:\/\/developer.wordpress.org\/reference\/functions\/parse_blocks\/)()<\/code>, kt\u00f3ra u\u017cywa parsera Gutenberga do dostarczonej zawarto\u015bci posta, aw zamian otrzymasz tablic\u0119 PHP ze wszystkimi informacjami i zawarto\u015bci\u0105 blok\u00f3w.<\/p>\n<h2>Wniosek<\/h2>\n<p>Mam nadziej\u0119, \u017ce ten post nie tylko nauczy\u0142 Ci\u0119 czego\u015b o programowaniu dla Gutenberga, ale tak\u017ce sprawi\u0142, \u017ce zaciekawi\u0142 Ci\u0119 i chcia\u0142 dowiedzie\u0107 si\u0119 wi\u0119cej! Jako programista WordPress skoncentrowany na PHP, kt\u00f3ry pocz\u0105tkowo opar\u0142 si\u0119 pomys\u0142owi przej\u015bcia na technologi\u0119 opart\u0105 na Javascript, mog\u0119 powiedzie\u0107, \u017ce gdy ju\u017c zrobisz krok w kierunku poznania \u201enowej drogi&#8221;, b\u0119dziesz zadowolony, \u017ce to zrobi\u0142e\u015b. Gutenberg otwiera si\u0119 na nowe sposoby dostosowywania, projektowania i wy\u015bwietlania tre\u015bci WordPress bez potrzeby tworzenia stron lub motyw\u00f3w z ci\u0119\u017ckimi bibliotekami, aby umo\u017cliwi\u0107 elastyczn\u0105 i dobrze wygl\u0105daj\u0105c\u0105 tre\u015b\u0107 post\u00f3w. Musimy tylko nauczy\u0107 si\u0119 optymalnie z nim pracowa\u0107!<\/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>Ten post ma na celu pom\u00f3c Ci jako programi\u015bcie WordPress, ale pocz\u0105tkuj\u0105cemu Gutenbergowi w zrozumieniu kluczowych poj\u0119\u0107 i podstaw do opracowania dla Gutenberga.<\/p>\n","protected":false},"author":1,"featured_media":220557,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[897,721,721,940,940,897,1110,815,845,845,866,866,815],"tags":[1169],"class_list":["post-233320","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kod","category-deweloper","category-gutenberg-7","category-n-a","category-wtyczki","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233320","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=233320"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233320\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/220557"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=233320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=233320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=233320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}