 Daję was, wiecie bardzo. Część wszystkich. Pięknie mówi dzisiaj o tworzeniu natyjnego broku w Gutenberg'a. Ja nazywam się... A, dobra. Ja nazywam się Dawid Rubański. Jestem web-developerem i skromnym web-developerem i prowadzę kanał dość nowy, świeżynka Łorczystwo Polsku, pięć miesięcy. Strymujemy razem co tygodniowo Marcinem Krzemicki, który też ma dzisiaj warsztaty i siedzi tam z tyłu ukryty. Co tydzień o World Pressie. Również tutaj produkci GWP, appointment, jak byście chcieli się zainteresować w troszkę jeszcze i nie ma, ale, ale, ale będzie. W każdym razie. Przede wszystkim, zanim przejdziemy w ogóle jeszcze do tworzenia customowych bloków Gutenbergowych, to mimo wszystko, mimo że, wiecie, to jest irydziące, że tak mówię, ale jednak Gutenberg na chwilę obecną już jest tak rozwinięty, że bardzo wiele use-case'ów jesteśmy w stanie ogarnąć bez customowych bloków, jednakowoż są takie use-case'ów, gdzie potrzebujemy te customowe bloki i o tym właśnie będziemy dzisiaj mówić, jednak zanim przystąpicie do tworzenia takiego bloku, to zastanowcie się, czy nie da się tego zrobić bez tworzenia takiego customowego bloku, a jeżeli już musicie, to pokażę Wam też takie, takie sposoby, żeby się nie narobić i żeby też był ten customowy blok, ale używający, jak najwięcej się da, z samego Gutenberga. A więc tak, my WordPress developerzy, uwielbiamy oczywiście PHPa, JavaScript, no to jQuery ewentualnie i jak już vanilla JavaScript nam tutaj wszedł, to mył to raczej getElementById ukryj, pokaż, a teraz nam wsadzili całego Reacta do WordPressa i nagle musimy się nauczyć całego Reacta, a jeszcze tak naprawdę na backendzie w Gutenbergu jest Redux do zarządzania stanem, także jest tego trochę i jest to trochę przerażające, szczegółą się na początku, ale zaraz Wam też pokażę, że nie jest to aż takie straszne. Czy jest i React oczywiście zużywany do UI i editingu w Gutenbergu, a Redux jest oczywiście używany jako data layer. Jeżeli chcecie tworzyć cokolwiek związanego z Gutenbergiem natywnie, no to polecam Wam również oczywiście zainstalować te dwa rozstrzeżenia, jak developer tools, jako że, jak już wspomniałem Gutenberg jest napisany, jak wiecie, w Reactcie oraz Redux DevTools jak już też wspomniałem, Redux jest używany pod maską do zarządzania stanem w Gutenbergu. Nie zapomnijcie również włączyć WPD-Bug Natru i WPD-Bug Scripts Natru, Adam i się przypomniał, że muszę to zrobić, żeby zobaczyć błędy w konsolni, a inaczej będziecie widzieć je zminifikowane błędy Reacta. Są dwa rodzaje bloków statyczne tutaj chciałbym może przenieść się na Gutenberg, ale stwierdziłem, że jednak tego nie zrobię, nie będę ryzykował, nie przenoszę się. Różnica jest między nimi taka, że dynamiczne bloki np. przykładem dynamicznego bloku jest blok icon który jest, wydaje się dziwne, że jest to blok dynamiczny, ale jest blok który wymaga PHP'a, aby wygenerować jego output, jego kodu i taki blok może zawierać dynamiczne treści np. datę, czy np. jakieś ostatnie wpisy z bloga itd. A blok statyczne generalnie to są takie bloki, które jedyne co potrzebują do wygenerowania ich treści to jest to co wprowadziliśmy lub ustawiliśmy w samym edytorze. Czyli np. treść którą wprowadziliśmy do edytora jakieś ustawienia, formatowanie itd. Jeżeli to wszystko co ustawiamy w Gutenberg w takim momencie taki blok jest statyczny jego treść nie zmienia się między wyświetleniami. Jak już raz ustawiliśmy, że treść jest Hello World, to ta treść będzie zawsze Hello World, a nie Hello World 10 np. za kolejnym wyświetleniem. Ok, więc jak w ogóle tworzyć taki blok? Jest kilka sposobów dookoła całego tworzenia wordpressowych bloków jest sporo narzędzi, one się cały czas rozwijają i bardzo dobrze to widzieć, bo początki były bardzo ciężkie w tym syfapie całym. Dzisiaj już mamy tak naprawdę taką jedną paczuczkę, która się nazywa wordpress create blok i tak naprawdę jedyne co musicie zrobić to spalić tą komendę i ona Wam wygeneruje cały plug-in, który już będzie zawierał cały kod który jest potrzebny żeby utworzyć to jest nawet takim boilerplate, który potrzebujecie aby stworzyć taki customowy blok. Ja osobiście nie używam tego z tego tylko względu, że pod maską to rozwiązanie również używa czegoś takiego co się nazywa innej paczki wordpress scripts i tak naprawdę to jest takie bardzo ciężkie layer to jest tylko generator boilerplate, ta paczka create blok a wszystko odbywa się tak naprawdę cała ta cała ten silnik budowania kodu odbywa się właśnie w tej paczce wordpress scripts instalowanie tej paczki ręcznie przeze mnie da im też możliwość tutaj ogólnie widzicie jak to zrobione, zainstalowałem po prostu sobie wordpress scripts jako dev dependency i potem mam script start, gdzie po prostu opalam wordpress script start i to wszystko co muszę zrobić aby ten blok zacząć developować tu jeszcze mam taki bonus, że mam playground wordpress playground zapięty przez open out to jest taka konsolowa wersja odpalania, odpalanie przez konsolę playgroundu jeżeli się nie mylę Adam mi tutaj potwierdza także o to odpala mi development wtyczki i jeszcze odpala mi całego wordpressa do tego bez instalowania żadnego do kera bez niczego to już Adam opowiadał tak, że nie będę się powtarzał to daje mi też również możliwość posiadania to jest bardzo częsty w ogóle request żeby mieć wiele bloków w jednej wtyczce bo czasami się zdarza że zaczynacie pisać jeden blok potem chcecie drugi, trzeci, czwarty teraz za każdym razem tworzyć nową wtyczkę to potem mamy 20 wtyczek do 20 bloków i potem się robi mes itd więc tutaj nie mamy takiego problemu, bo możemy sobie po prostu wordpress script automatycznie bez żadnej dodatkowej konfiguracji bez niczego wykrywa że mam pięć folderów z wtyczkami, blokami i automatycznie te blokki mi dodaję potem wam pokażę, przejdziemy sobie na na może nie na live coding ale przejdziemy sobie na panel admin i sobie zobaczymy jak to działa tutaj wam dam kompilacje najważniejszych pojęć które moim zdaniem oczywiście znaleźć i wyszukać, wygooglować i przeczytać sobie dokładnie co one robią przejdziemy sobie przez niektóre z nich tutaj na tej prezentacji Altaq Rich Text Inner Blocks możecie prowadzać tekst dowolny i formatować go i tak dalej jak na przykład headings i inne rzeczy Inner Blocks to jest blok, który pozwala wam na dodawanie wielu bloków w środku w nim, block control to jest toolbar, który macie nad nad waszym blokiem, attribute to jest jeden z najważniejszych właściwie konceptów w Gutenberg i w blokach to są po prostu takie metadane bo do bloku jeżeli macie jakieś dane, które chcecie przechować razem z tym blokiem to przechowujecie je w atrybutach i potem te atrybuty ustawiacie w waszym kodzie żeby one miały jakąś wartość Inspector Controls, to jest to samo co Block Controls, ale w sidebarze poprawy support też bardzo potężna rzecz pokażę wam również potem jak wykorzystywać ten to pole w block JSON który jest poprawy, zresztą to pole support do dodawania bardzo prosto featureów, które są już w natywnych blokach, do waszych customowych bloków i tak naprawdę to była beta lista z paczek, moim zdaniem, które powinniście również znać i wiedzieć o nich i wiedzieć, że będziecie z tych paczek bardzo często importować rzeczy to jest właśnie block editor blocks, components, element internazjonalizacja oczywiście i już wspomniany wcześniej WordPress Scripts mając wiedzę o tych przejściu paczkach tak naprawdę zrobicie 90% rzeczy, tam są jeszcze dodatkowe inne rzeczy, jakieś konteksty, slot fills inne takie rzeczy, które gdzieś tam czy jakieś marzowanie inne takie rzeczy, ale nie będziecie potrzebować prawdopodobnie większości z tych rzeczy to jest większość z tego co potrzebujecie ok, to teraz przeniesiemy się zaraz na przeglądarkę w Gutenberg nie tylko w Gutenberg, w adminie czy ja tu w ogóle mogę to zrobić o nie ok, muszę wyjść jak sobie tutaj zrobimy tak i zrobię to większe i pójdę sobie do konsoli i sobie tutaj zrobię wp to nie jest nic nowego tak jak było od bardzo dawno zawsze praktycznie od kiedy jest WordPress w adminie mamy tą globalną zmienną WP w tej zmiennej jest bardzo dużo rzeczy, bardzo ale najważniejsze dla nas rzeczy, kiedy jesteśmy w kontekście Gutenberg, czyli na stronie która posiada ten editor są tutaj dodatkowe rzeczy, których normalnie nie ma, tak jak blog directory blog editor, blog library, blogs components i już może zauważacie tą zależność, że te nazwy one się pokrywają z tym co przedstawiliście te nazwy paczek ja wam pokażę też teraz kod który importuje te paczki na przykład mamy WordPress slash blog editor dzięki właśnie temu WordPress slash script i właśnie skryptowi do budowania czy do startowania środowiska do europejskiego tego oczowania naszego skryptu dzięki temu, że mamy tą WordPress script to jeżeli zainportuje WordPress blog editor on w kodzie wynikowym będzie tak naprawdę korzystał z tego globalnego WP i znajdzie tu po prostu blog editor i będzie korzystał z tego co tutaj jest chciałbym po prostu żebyście byli świadomi żebyście wiedzieli, że takie coś właśnie jest, że mógłbym tutaj również dobrze zamiast zaciągnąć to zainportować pokażę wam również, że tego w ogóle nie ma w moim package JSON dla tej paczki w ogóle nie instalowałem ona jest dostępna out of the box dla mnie, dlatego że tu byłem w index ona jest dostępna dla mnie dlatego, że mam zastanowane WordPress slash script ponieważ ta paczka jest jako zależność w WordPress script więc nie muszę je importować mało tego to w ogóle nie jest mi potrzebny nawet ona nawet nie musi być zależnością w WordPress script, dlaczego ponieważ to docelowo zostanie używam, używam to tutaj to tak naprawdę to będzie używało właśnie tego globalnego obiektu window, wp wp.editor jak tam było blog editor tutaj mamy to jest ta sama nazwa czyli blog editor to jest dokładnie to samo co zrobienie tego i potem użycie tego to po prostu jest wszystko za nas jest obsługiwane przez WordPress script dlatego nie musimy nawet w ogóle o tym myśleć ok, wracamy do prezentacji ok, i teraz zanim jeszcze w ogóle przejdę może do tworzenia takich prawdziwie customowych blogów, takich zupełnie cokolwiek sobie nie wymyślisz chciałbyś sobie w Super Mario Bros zrobić w Gutenberg'u możesz, to jest w ogóle nie zrobić tego oczywiście przez rzeczy, które daje ci Gutenberg, ale możesz spróbować użyć innerblogs jak to działa, innerblogs to jest komponent, który pozwala nam na zdefiniowanie, co może być w tym inaczej, pozwala nam do dodanie dowolnej ilości dzieci, komponentów dzieci czyli blogów dzieci możemy również sobie zrobić coś jak template i jest bardzo potężny w połączeniu z template log, które nam blokuje całą możliwość przesuwania rzeczy, usuwania i tak dalej ja wam pokażę właśnie ten blog, który tutaj stworzyłem przez register blog type ogólnie, wybaczcie, mam tylko 25 minut także nie jestem w stanie wszystkiego opowiedzieć o tym ale staram się, jak mogę czyli template plus template log, co nam to zrobiło zobaczcie, mam dwa bloki content section oraz image section i limitacja innerblogs jest taka, to też właśnie chciałbym wam powiedzieć, że może być tylko jeden innerblogs nadany blog czyli nie mogę mieć dwóch innerblogs, znaczy nie mogę sobie zrobić layoutu które będą trzy różne miejsca i w tym zrobię innerblogs, z tym zrobię innerblogs i w tym zrobię innerblogs, w ramach jednego kompon blogu, nie można tego robić może być tylko jeden per blog dlatego ja stworzyłem dwa bloki które, jak zaraz zobaczycie mają tutaj również takie pole, które się nazywa parent i w nim podaje w jakim bloku one są tylko dozwolone dzięki temu, jak pójdę sobie do admina tutaj i kliknę sobie tutaj na inserter, to ten blok tutaj w ogóle mi się nie wyświetla jak sobie wpiszę wódzek Dynia to ja widzę tylko bloki które zarejestrowałem jako bloki, które są dozwolone wszędzie a ten blok się nie wyświetla, to jest taki powiedzmy blok ad hoc nazwijmy go i tak samo jest ten blok image section który również jest dozwolony tylko w bloku wódzek Dynia hero a gdzie jest ten blok? poniżej tutaj rejestruje główny blok on pobiera też tą nazwę z metadata a tak naprawdę to wszystko pobiera się z blok Jason tutaj anatomii bloku nie będziemy już przechodzić ale ale mamy tutaj blok, który nazywa się wódzek Dynia hero wódzek Dynia hero wódzek Dynia hero i po prostu on jest jako parent w tych dwóch blokach przepraszam przepraszam ale jest jako parent z dwóch blokach także także jaki jest wynik tej całej operacji wynik jest taki, że mamy dwa bloki które każdy z nich używa inner blocks i mają dozwolony tylko jeden parent i temu mam tutaj blok, który jak sobie zobaczycie który mam dwa dodatkowe bloki jeden z nich to wódek Dynia hero ja mogę sobie zrobić tutaj o widzicie? content section, image section i one są dozwolone nigdzie indziej one są tylko tutaj dozwolone i również mamy ten template więc mogę edytować tylko bo nie wiem co tam jest ale generalnie w ten sposób możecie bardzo bardzo dużo rzeczy zrobić rozbijając to w taki sposób używając inner blocki oczywiście minusem jest to, że macie dostępne jeżeli macie heading to jest blok butyn berga, więc macie wszystkie opcje headingów jak sobie tutaj, może wyśmiałem jakiś obraz jednak inspector png to musi być bezpieczne ok, to mamy jakiś image i teraz możemy do tego image robić wszystkie te opcje, jakieś dło, ton itd więc czasami nie chcecie takiego sytuacji nie chcecie czasami dawać możliwości dodawania wszystkich opcji butenbergowych, może też to powyłączać jest to troszeczkę roboty z tym, ale Adam już mi tutaj mówił że są prace trwałem na tym, żeby było bardzo łatwo można to powyłączać wszystkie rzeczy, których nie chcecie z tych bloków korowych także to jest jedna z opcji ale może da się bardzo, bardzo, bardzo daleko z tym zaist z tym inner blocks w szczególności jeżeli robicie komponenty czy bloki, które są typowe dla motywów chcecie zrobić motyw, macie design chcecie zrobić z tego template motyw, gdzie ludzie mogą sobie wybrać bloki i sobie robić z waszych bloków mało tego możecie również, to taki tip już możecie sobie zrobić jeden, główny tym samym mechanizmem lokowania parenta, możecie sobie zrobić jeden główny blok który przyjmuje inner blocki i ten główny blok jest templatem zafiksowanym na każdą stronę i dzięki temu cały inserter nie działa wtedy w ogóle, tylko możecie dodawać inner blocki do waszego głównego bloku i tam macie tylko wybór z waszych głównych bloków, które sobie dodali się tak jak tutaj ja miałem, właśnie jak widzieliście Slash, Wucek, Gdynia tak, mogłem zrobić, że mam jeden blok i tylko te bloki są dostępne ale dobra wróćmy do prezentacji obsługa suports w blog Jason to jest też bardzo, bardzo, bardzo potęży narzędzie ja wam pokażę tutaj jeden z bloków właśnie blog hero on w blog Jason podaje sekcję suports i on mówi, że nie wspiera edycji HTMLa wspiera Align na przykład, tak, czyli mogę sobie wrócić do tutaj jak sobie zaznaczę, to mam tutaj tą opcję Align ja nie musiałem ani napisać grama kodu, żeby to było wspierane w moim bloku, mogę sobie zrobić max width mogę sobie zrobić full width mogę sobie zrobić left, right i tak dalej, to wszystko działa out of the box co jeszcze mam tutaj w wsparciu kolory, gradienty spacing, jak sobie pójdę do sidebaru, zamkniemy to to wszystko mam out of the box mogę sobie zmienić background tego bloku mogę sobie zmienić spacing oczywiście nie zawsze to chcecie to bardzo łatwo jesteście w stanie dodać do waszych własnych customowych bloków przez ten atrybut suports, jak nie wiecie w ogóle skąd to wziąć, ja to mam też na jednym z slajdów jeżeli nie zdążę do niego dojść to możecie sobie po prostu podejrzeć jak działają inne bloki butenbergowe znajdźcie sobie dowolny blok, który wam się podoba najczęściej jakiś taki baton albo jakiś konkretny i tu jak sobie pójdziecie do na przykład weźmy sobie blok, blog Jason i tu co on ma w suports gdzieś jakiś baton, blog Jason on będzie dużo wspierał pełno atrybutów oraz suports pełno rzeczy oczywiście tutaj dużo jest takich rzeczy jak Anders Koran, Anders Korak, experimental to w teoricznie nie polecam mam tego używać ale wszyscy to używają także nie wiem nie słyszycie tego ode mnie co dalej mamy już tak jak właśnie akurat na slajd czyli podgnianie bloku w core możecie sobie wejść i zobaczyć sobie dowolny blok jak oni to robią w blog Jason, co oni używają mało tego możecie sobie iść do edit Jason zobaczyć co oni tutaj tak naprawdę robią czego oni tu używają w jaki sposób na przykład dodają elementy do właśnie toolbara tu już od razu widać, że to jest blog control możecie sobie zobaczyć skąd to jest zaciągnięte i to bardzo łatwo widać skąd co się bierze blog control jest tutaj z blog editor i możecie używać tego samego we waszym chodzie nr 1 tip podpowiedź jeżeli chcecie się nauczyć jak robić gluten breakowe bloki to zajrzyjcie właśnie sobie do tych które są w core ewentualnie możecie sobie zajrzeć do jakichś lepszych wtyczek które też dodają kasomowe bloki jak zapomniałem nazwę Marcin generally blocks na przykład właśnie albo do ukomersa ok tak jak mówiłem te inner bloki nadal pozostawiają te opcje dla użytkownika żeby pozmieniał coś czego wy nie chcecie tak naprawdę wspierać jeżeli chcecie naprawdę bardzo niskopodziemowo powiedzieć ja chcę tylko żeby on mógł zmienić heading, ja chcę tylko żeby mógł zmienić nie chcę żadnych tam dodatkowych opcji no to najczęściej będziecie wykorzystywać ten element rich text i ja na przykład mam tutaj taki bloczek który sobie stworzyłem na te potrzeby w c kastom nazwałem go to jest już niszczyłem w ogóle całą stronę przez moje klikanie, ale mamy blok który przyjmuje dwa rich teksty i tak naprawdę ja sobie stworzyłem tutaj kastomowy element wrapper ja go stworzyłem, ja stworzyłem ten layout on jest bardzo prosto, ma tylko wrapper i dwa pola tekstowe w środku ale on mógłby mieć bardzo bardzo skomplikowany lew mógłby być wszystko tak na końcu pamiętajmy też że to jest tak jak mówię, kastomowe kontrolki czyli możemy sobie stworzyć własny uploader do obrazków, do tego też są helpery wpiszcie sobie Google upload Gutenberg upload file, macie też helpery do tworzenia właśnie takiego uploadu kastomowego pamiętajcie na końcu że to jest też tylko reakt więc tak naprawdę w środku możemy sobie dowolny komponent zrobić, obsłużyć go tak jak chcemy ja jeszcze Wam też pokażę że jeszcze jak było dowolnie coś to jeszcze dalej, jak znajdziecie sobie tutaj element zakładkę to tu jak sobie jeżeli ktoś ma jakiś pojęcie o reakcie to sobie zobaczysz, że tak naprawdę bardzo dużo rzeczy, które tu są, komponent, children, fragment create lew, create portal to jak pójdziemy sobie może niżej, bardziej popularny, use effect use state cały reakt jest tutaj dla nas wyeksponowany przez tą zmienną, także to też daje Wam, może dać Wam do zrozumienia że wszystko możecie, to co możecie zrobić w reakcie możecie zrobić również tutaj w editorze ja znajdę tutaj, przy okazji powiem Wam use state wydaje mi się, że dziś używałem use state tutaj tak jak widzicie importuje to z WordPress element oczywiście nie mógłbym również, bo jak sobie zobaczycie to tutaj, gdzie jest Gutenberg, jest też reakt nawet tak, jak globalnie reakt dom też tutaj jest teoretycznie mógłbym sobie to zaciągnąć, ale nie polecam również tego zaciągajcie to bez posienia z tej paczki WordPress element i jak widzicie tu użyłem, na przykład miałem wczoraj na biforze mam 2 minutki, więc powiem ktoś mnie pytał o taki case, że chciałby mieć możliwość ograniczenia w inner blocksach możliwości ilości dzieci, czyli chciałby na przykład mieć możliwość nie pamiętam, kto to był tak, chciałbym mieć możliwość, że tylko 3 dzieci są dozwolone a potem nie, potem koniec no to zrobiliśmy test, enter, test enter, test i już nie można klikam enter i więcej nie można tutaj dodać mogę je oczywiście zmieniać przerabiać, ale nie mogę ich dodawać w kolejnych, mogę oczywiście sobie usunąć i w tym momencie mogę również dodać jak to jest zrobione, to jest ostatni koncept, który Wam chcę szybko pokazać to jest właśnie Redux jak sobie pójdziecie tutaj, macie ten extension do rozszerzenia do Reduxa to jak sobie pójdziecie tutaj mam troszeczkę zoom mocny, ale tutaj możecie sobie znaleźć wszystkie state, które są tutaj dostępne podczas pracy z Gutenbergiem i tak naprawdę wszystko co robicie tutaj, po lewej ma odzwierciedlenie tutaj, po prawej bardzo dużym uproszczeniu, bardzo dużym skrócie jeżeli i możemy robić dwie rzeczy z tym, możemy przede wszystkim wybierać tą dane, to mówimy o tym, że to są selektory ze state'u, ze stanu i możemy również dyspaczować akcję czy możemy po prostu robić rzeczy tutaj na tym stanie ja Wam pokażę właśnie przykład w jaki sposób jest ograniczony taki właśnie takie dodawanie po trzech dzieciach co się tutaj dzieje mam funkcję, która się nazywa hook, który się nazywa useDispatch i useSelect mam 10 sekund, tak że szybciutko kończę useSelect, useDispatch to jest właśnie robienie rzeczy na state useSelect to jest pobieranie rzeczy z tego state'u i co robię tutaj używam useDispatch ma core block editor, czyli przejdę sobie szybko tutaj widzicie core block editor i mogę sobie zobaczyć co jest w tym state'ie możecie sobie to przeglądać, blocks tu jest każdy blok opisany osobno i tak dalej, tak dalej, to wszystko jest możecie sobie to przeglądać, ja Wam szybko tutaj pokażę co robimy mam opcję do odejtowania atrybutów, to jest taka metoda na tym state'ie dostępna akcja i mówię ok wybieram sobie z naszego state'u znowu mam funkcję select tutaj dostępną znowu z core block editor mam selektor get blocks i w środku przekazuję z block props czyli stąd mój data block bo jak sobie pójdę tutaj z powrotem i sobie to zinspektuję to zobaczycie, że tu jest ten data block tutaj data block i to jest idie go tutaj w tym miejscu więc ja sobie mogę to wybrać z tego state'u, to też tam w tym redactie jest w tym state'ie ten element mój block potem mówię ok, jakie to ma inner blocks w środku no inner blocks 0, ma tylko 1 bo ma ten element mój w środku ten inner block wrapper mój główny no i potem w środku mamy kolejne inner block więc mówię weźmij ten pierwszy element po tej inner blocks'y ile ich mamy i potem tutaj w use effect ciężko jest to wytłumaczyć bardzo szybko w kilka minut updateujemy te atrybuty i oznaczamy je log na folder może było edytować a tutaj tutaj dynamicznie ustawiamy template log czyli mówimy możesz zmieniać coś w tym blocku czy nie, na podstawie tego czy mamy 3 elementy czy nie jeżeli mamy 3 elementy to blokujemy cały block jeżeli nie mamy, mówimy domyślnie nic nie blokuj a to tutaj takie szybko dodam dla Was jest tylko po to abyśmy mogli usuwać, bo gdyby nie było tej części zaznaczonej to byśmy doszły do sytuacji gdzie dodajemy 3 bloki wszystko jest zablokowane i nie możemy już wrócić, bo nie da się edytować tyle, a jeszcze wróćmy tutaj do prezentacji żeby się już tak, ok i jeszcze jak nie mam oczywiście czasu żeby wszystko opowiedzieć ale zajrzyjcie na WordPress po polsku i tam dużo jest u Gutenberg'u i to tyle, dzięki