Gram z Gutenbergiem przed włączeniem go do rdzenia i chciałbym wiedzieć, jak rozszerzyć istniejący blok galerii, aby zmienić jego wyświetlanie. Na przykład zamiast siatki miniatur chciałbym wyświetlić pokaz slajdów z obrazami. Czy to możliwe? Jeśli tak to jak? Każda pomoc będzie mile widziana.
images
gallery
block-editor
leemon
źródło
źródło
Odpowiedzi:
Ok, bawiłem się tym przez chwilę i udało mi się zmienić wyjście bloku Galerii, z następującymi zastrzeżeniami:
@wordpress/hooks
podczas dyskusji o tym, co układ haki do wykorzystania w Rdzeń jest w toku .Pierwszą rzeczą, którą musimy zrobić, to zarejestrować skrypt. Odbywa się to za pomocą
wp_enqueue_scripts()
, ale naenqueue_block_editor_assets
haku.Skrypt powinien mieć
wp-blocks
skrypt jako zależność. Jest prawie na pewno już załadowany w edytorze, ale uczynienie z niego zależności prawdopodobnie gwarantuje, że zostanie załadowane przed naszym skryptem.HTML dla wyjścia bloku jest obsługiwany przez
save()
metodę bloku. Możesz zobaczyć blok galerii w tym pliku .Na tym etapie (marzec 2018) Gutenberg obsługuje filtr Zachowaj metodą bloków
blocks.getSaveElement
. Możemy dodać do tego haka w JavaScript w następujący sposób:Pierwszy argument to nazwa haka, drugi argument to - jak sądzę - przestrzeń nazw, a ostatni argument to funkcja zwrotna.
Ponieważ zastępujemy
save()
metodę bloku, musimy zwrócić nowy element. Nie jest to jednak normalny element HTML, który musimy zwrócić. Musimy zwrócić element React .Gdy spojrzysz na
save()
metodę oryginalnego bloku , zobaczysz JSX. React, którego Gutenberg używa pod maską, obsługuje go do renderowania elementów. Więcej informacji na ten temat znajduje się w tym artykule .JSX zwykle wymaga kroku kompilacji, ale ponieważ nie wprowadzam kroku kompilacji dla tego przykładu, potrzebujemy sposobu na utworzenie elementu bez JSX. React zapewnia to
createElement()
. WordPress zapewnia opakowanie dla tej i innych funkcji reagowania w postaciwp.element
. Więc do korzystaniacreateElement()
używamywp.element.createElement()
.W funkcji oddzwaniania
blocks.getSaveElement
otrzymujemy:element
Oryginalny element utworzony przez blok.blockType
Obiekt reprezentujący używany blok.attributes
Właściwości instancji bloku. W naszym przykładzie obejmuje to obrazy w galerii i ustawienia takie jak liczba kolumn.Nasza funkcja oddzwaniania musi:
Oto kompletny przykład, który po prostu wyprowadza a
ul
z klasą,my-gallery
ili
s dla każdego obrazu z klasąmy-gallery-item
i dlaimg
każdego zsrc
zestawem adresu URL obrazu.Niektóre rzeczy do zapamiętania:
ul.wp-block-gallery .blocks-gallery-item
, więc ten znacznik i te klasy są wymagane do edycji bloku, aby było możliwe. Ten znacznik jest również używany do domyślnego stylu.attributes.images.map
zapętla każdy obraz i zwraca tablicę elementów potomnych jako treść dla głównego elementu. Wewnątrz tych elementów znajduje się inny element potomny dla samego obrazu.źródło
Tutaj, aby podać zaktualizowaną odpowiedź. Uważam, że ten post jest bardzo pomocny w odpowiedzi na pytanie, jak rozszerzyć Blok Galerii.
Krótko mówiąc, wskazane jest, aby po prostu utworzyć nowy blok zamiast rozszerzać istniejący. Z postu w moim linku powyżej:
Powyższy link odwołuje się również do wtyczki Create-Guten_Block, która jest narzędziem wiersza polecenia, które wygeneruje wszystko, czego potrzebujesz, aby rozpocząć tworzenie bloku. Narzędzie jest bardzo łatwe w użyciu i łatwe w konfiguracji.
Dzięki tym zasobom udało mi się szybko opracować niestandardowy blok galerii
źródło