Jak robić własne bloki Gutenberga – kompletny poradnik

Spis treści

Wprowadzenie – dlaczego warto tworzyć własne bloki

Tworzenie własnych bloków Gutenberga to klucz do unikalnego wyglądu i funkcjonalności strony WordPress. Standardowe bloki oferują podstawowe możliwości, ale niestandardowe bloki pozwalają na stworzenie w pełni spersonalizowanych komponentów dopasowanych do specyficznych potrzeb Twojej witryny.

Własne bloki dają pełną kontrolę nad wyglądem i zachowaniem elementów strony. Zamiast polegać na gotowych rozwiązaniach, możesz tworzyć komponenty idealnie dopasowane do identyfikacji wizualnej marki i wymagań użytkowników.

W tym poradniku przeprowadzę Cię przez cały proces tworzenia niestandardowych bloków – od podstawowych koncepcji po zaawansowane techniki, które pozwolą Ci w pełni wykorzystać potencjał edytora blokowego WordPress.

Struktura bloku Gutenberga

Każdy blok Gutenberga składa się z kilku kluczowych elementów, które razem tworzą funkcjonalny komponent edytora. Zrozumienie tej struktury jest fundamentem tworzenia własnych bloków.

Podstawowe komponenty bloku:

1. Plik block.json

To plik konfiguracyjny zawierający metadane bloku:

  • Nazwa i tytuł bloku
  • Opis i kategoria
  • Ikona i słowa kluczowe
  • Wersja API
  • Atrybuty bloku
  • Obsługiwane funkcje

2. Plik edit.js

Odpowiada za wygląd i zachowanie bloku w edytorze:

  • Interfejs użytkownika w edytorze
  • Obsługa atrybutów i ich zmian
  • Interakcje z użytkownikiem
  • Podgląd na żywo

3. Plik save.js

Definiuje, jak blok jest renderowany na froncie:

  • Struktura HTML wyświetlana użytkownikom
  • Dynamiczne dane
  • Warunki renderowania
  • Optymalizacja wydajności

4. Pliki CSS

Odpowiadają za stylizację bloku:

  • style.css – style na froncie
  • editor.css – style w edytorze
  • Responsive design
  • Animacje i przejścia

Struktura folderów bloku:

Typowa organizacja plików bloku wygląda następująco:

  • src/ – pliki źródłowe
  • build/ – skompilowane pliki
  • block.json – konfiguracja bloku
  • index.php – rejestracja bloku w WordPress

Przygotowanie środowiska deweloperskiego

Przed rozpoczęciem tworzenia bloków należy odpowiednio skonfigurować środowisko deweloperskie. Odpowiednie narzędzia znacznie przyspieszą pracę i ułatwią debugowanie.

Wymagania techniczne:

1. Środowisko WordPress

Potrzebujesz:

  • WordPress w wersji 5.0 lub nowszej
  • Lokalny serwer deweloperski (XAMPP, Local, Docker)
  • Tryb debugowania włączony
  • Dostęp do plików motywu lub wtyczki

2. Node.js i npm

Niezbędne do kompilacji JavaScript:

  • Node.js w wersji 14 lub nowszej
  • npm lub yarn
  • @wordpress/scripts
  • Webpack lub Vite (opcjonalnie)

3. Edytor kodu

Rekomendowane narzędzia:

  • VS Code z rozszerzeniami WordPress
  • PHPStorm
  • Sublime Text
  • Narzędzia deweloperskie przeglądarki

Konfiguracja projektu:

Metoda 1: @wordpress/create-block

Najszybszy sposób na rozpoczęcie:

  1. Uruchom terminal w folderze wtyczek
  2. Wykonaj komendę: npx @wordpress/create-block nazwa-bloku
  3. Postępuj zgodnie z instrukcjami
  4. Uruchom npm start

Metoda 2: Ręczna konfiguracja

Dla pełnej kontroli nad projektem:

  1. Stwórz folder wtyczki
  2. Utwórz plik główny wtyczki
  3. Skonfiguruj package.json
  4. Zainstaluj zależności
  5. Skonfiguruj Webpack

Narzędzia deweloperskie:

  • WordPress Block Editor Handbook – dokumentacja
  • Block Developer Tools – wtyczka do debugowania
  • React Developer Tools – rozszerzenie przeglądarki
  • WordPress CLI – zarządzanie z linii komend

Tworzenie prostego bloku krok po kroku

Teraz przejdziemy do praktycznego tworzenia prostego bloku. Zaczniemy od podstawowego komponentu, który wyświetla niestandardowy komunikat.

Krok 1: Definicja bloku

Tworzenie pliku block.json

Zacznij od zdefiniowania metadanych bloku:

  • Określ unikalną nazwę bloku (namespace/block-name)
  • Dodaj czytelny tytuł i opis
  • Wybierz odpowiednią kategorię
  • Dodaj ikonę z biblioteki WordPress
  • Zdefiniuj słowa kluczowe dla wyszukiwania

Przykładowa konfiguracja:

W pliku block.json zdefiniuj podstawowe właściwości:

  • Nazwa: my-plugin/custom-notice
  • Tytuł: Niestandardowy komunikat
  • Kategoria: design
  • Ikona: warning
  • Opis: Wyświetla niestandardowy komunikat

Krok 2: Interfejs edytora

Tworzenie pliku edit.js

Zdefiniuj wygląd bloku w edytorze:

  • Importuj komponenty React
  • Stwórz funkcję Edit
  • Dodaj elementy interfejsu
  • Obsłuż zmiany atrybutów

Podstawowa struktura:

Użyj komponentów WordPress:

  • RichText dla edytowalnego tekstu
  • InspectorControls dla panelu ustawień
  • BlockControls dla narzędzi bloku
  • ColorPalette dla wyboru kolorów

Krok 3: Renderowanie na froncie

Tworzenie pliku save.js

Zdefiniuj, jak blok wygląda na stronie:

  • Użyj tych samych komponentów co w edytorze
  • Zachowaj spójność wyglądu
  • Optymalizuj kod HTML
  • Dodaj odpowiednie klasy CSS

Dynamiczne renderowanie:

Dla zaawansowanych bloków:

  • Użyj funkcji render_callback w PHP
  • Pobieraj dane z bazy
  • Generuj HTML dynamicznie
  • Implementuj cache'owanie

Krok 4: Stylizacja

Tworzenie plików CSS

Dodaj style dla bloku:

  • Stwórz style.css dla frontu
  • Dodaj editor.css dla edytora
  • Użyj CSS Grid i Flexbox
  • Zapewnij responsywność

Najlepsze praktyki:

  • Używaj prefiksów w nazwach klas
  • Unikaj konfliktów stylów
  • Testuj na różnych urządzeniach
  • Optymalizuj wydajność

Rejestracja bloku w WordPress

Po stworzeniu plików bloku należy zarejestrować go w systemie WordPress. Proces ten różni się w zależności od tego, czy blok jest częścią motywu czy wtyczki.

Rejestracja w wtyczce:

Metoda 1: Automatyczna rejestracja

Najprostszy sposób:

  1. Użyj funkcji register_block_type
  2. Podaj ścieżkę do pliku block.json
  3. WordPress automatycznie załaduje blok
  4. Dodaj skrypty i style

Metoda 2: Ręczna rejestracja

Dla pełnej kontroli:

  1. Zarejestruj skrypty bloku
  2. Dodaj style CSS
  3. Użyj funkcji register_block_type
  4. Określ atrybuty i render_callback

Rejestracja w motywie:

Struktura plików:

W motywie bloki umieszczaj w:

  • blocks/ – dla pojedynczych bloków
  • src/blocks/ – dla kodu źródłowego
  • inc/blocks/ – dla funkcji PHP

Rejestracja w functions.php:

Dodaj kod rejestracji:

  1. Hook do init
  2. Rejestracja skryptów
  3. Rejestracja bloków
  4. Obsługa zależności

Weryfikacja rejestracji:

Sprawdzenie w edytorze:

Upewnij się, że blok jest widoczny:

  • Otwórz edytor Gutenberg
  • Szukaj bloku po nazwie
  • Sprawdź kategorię
  • Testuj działanie

Debugowanie problemów:

Jeśli blok nie działa:

  • Sprawdź konsolę przeglądarki
  • Weryfikuj ścieżki plików
  • Sprawdź zależności
  • Użyj trybu debugowania

Dodawanie atrybutów i pól konfiguracyjnych

Atrybuty to serce każdego bloku – przechowują dane i konfigurację, które definiują wygląd i zachowanie komponentu. Dobrze zaprojektowane atrybuty czynią blok elastycznym i łatwym w użyciu.

Typy atrybutów:

1. Tekstowe (string)

Dla prostych danych tekstowych:

  • Tytuły i nagłówki
  • Opisy i etykiety
  • Linki i URL
  • Klasy CSS

2. Numeryczne (number)

Dla wartości liczbowych:

  • Rozmiary i wymiary
  • Ilość elementów
  • Opóźnienia animacji
  • Wartości procentowe

3. Logiczne (boolean)

Dla przełączników i opcji:

  • Widoczność elementów
  • Włączenie funkcji
  • Stany aktywne/pasywne
  • Opcje tak/nie

4. Tablice (array)

Dla złożonych danych:

  • Listy elementów
  • Konfiguracje wielokrotne
  • Zbiory wartości
  • Dane strukturalne

5. Obiekty (object)

Dla zagnieżdżonych danych:

  • Konfiguracje stylów
  • Dane adresowe
  • Metadane
  • Złożone struktury

Pola konfiguracyjne:

1. Panel boczny (InspectorControls)

Dla zaawansowanych ustawień:

  • PanelSettings dla grupowania
  • TextControl dla tekstu
  • RangeControl dla zakresów
  • ToggleControl dla przełączników

2. Pasek narzędzi (BlockControls)

Dla szybkich opcji:

  • Toolbar dla przycisków
  • ToolbarButton dla akcji
  • DropdownMenu dla menu
  • ToolbarGroup dla grupowania

3. Bezpośrednie edytowanie

Dla treści:

  • RichText dla formatowanego tekstu
  • PlainText dla czystego tekstu
  • URLInputButton dla linków
  • MediaUpload dla mediów

Walidacja atrybutów:

Walidacja w block.json:

Definiuj reguły:

  • Wymagane pola
  • Domyślne wartości
  • Dozwolone typy
  • Ograniczenia wartości

Walidacja w JavaScript:

Dodaj logikę:

  • Sprawdzaj typy danych
  • Waliduj zakresy
  • Filtruj niebezpieczne wartości
  • Obsługuj błędy

Styling bloków w edytorze i na froncie

Odpowiednia stylizacja bloków jest kluczowa dla spójnego wyglądu strony i dobrego doświadczenia użytkownika. WordPress oferuje kilka sposobów na dodawanie stylów do bloków.

Style w edytorze vs na froncie:

1. Style edytora (editor.css)

Tylko dla widoku edytora:

  • Podświetlenie bloku po zaznaczeniu
  • Wizualne wskaźniki interakcji
  • Pomocnicze elementy interfejsu
  • Specjalne stany edytora

2. Style frontu (style.css)

Dla widoku publicznego:

  • Ostateczny wygląd bloku
  • Animacje i przejścia
  • Responsive design
  • Optymalizacja wydajności

3. Style wspólne

Dla obu widoków:

  • Podstawowa typografia
  • Kolory i tła
  • Układy i pozycjonowanie
  • Wspólne komponenty

Techniki stylizacji:

1. Prefiksy klas

Unikaj konfliktów:

  • Używaj unikalnych prefiksów
  • Nazwij klasy semantycznie
  • Stwórz system nazewnictwa
  • Dokumentuj konwencje

2. CSS Variables

Dla spójności:

  • Definiuj zmienne globalne
  • Używaj motywu kolorów
  • Twórz system typografii
  • Zapewnij skalowalność

3. CSS Grid i Flexbox

Dla nowoczesnych układów:

  • Twórz responsywne siatki
  • Używaj elastycznych kontenerów
  • Implementuj masonry layouts
  • Optymalizuj wydajność

Responsive design:

Media queries

Dostosuj do urządzeń:

  • Definiuj punkty graniczne
  • Testuj na różnych ekranach
  • Używaj mobile-first
  • Optymalizuj dotyk

Kontenery elastyczne

Zapewnij skalowalność:

  • Używaj jednostek względnych
  • Implementuj clamp()
  • Dostosuj czcionki
  • Zapewnij czytelność

Optymalizacja wydajności:

Minimalizacja CSS

Zmniejsz rozmiar plików:

  • Używaj PostCSS
  • Kompresuj style
  • Usuń nieużywany kod
  • Implementuj lazy loading

Krytyczny CSS

Przyspiesz renderowanie:

  • Identyfikuj krytyczne style
  • Osadź w HTML
  • Opóźnij resztę
  • Monitoruj wydajność

Debugowanie i testowanie bloków

Debugowanie i testowanie są niezbędne do stworzenia niezawodnych bloków. WordPress oferuje kilka narzędzi i technik, które ułatwiają identyfikowanie i rozwiązywanie problemów.

Narzędzia debugowania:

1. Konsola przeglądarki

Podstawowe narzędzie:

  • Sprawdzaj błędy JavaScript
  • Monitoruj żądania sieciowe
  • Analizuj wydajność
  • Inspekcja DOM

2. WordPress Debug

Włącz w wp-config.php:

  • WP_DEBUG true
  • WP_DEBUG_LOG true
  • WP_DEBUG_DISPLAY false
  • SCRIPT_DEBUG true

3. Block Developer Tools

Wtyczka do debugowania:

  • Inspekcja bloków
  • Podgląd atrybutów
  • Analiza wydajności
  • Testowanie kompatybilności

Typowe problemy:

1. Blok się nie wyświetla

Sprawdź:

  • Czy blok jest zarejestrowany
  • Czy skrypty się ładują
  • Czy nie ma błędów JS
  • Czy ścieżki są poprawne

2. Atrybuty nie zapisują się

Weryfikuj:

  • Definicję atrybutów w block.json
  • Typy danych
  • Funkcje setAttributes
  • Walidację danych

3. Style nie działają

Sprawdź:

  • Czy CSS się ładuje
  • Priorytety stylów
  • Konflikty klas
  • Specyficzność selektorów

Testowanie:

1. Testy funkcjonalne

Weryfikuj działanie:

  • Dodawanie i usuwanie bloku
  • Zmiany atrybutów
  • Zapisywanie i ładowanie
  • Kompatybilność z innymi blokami

2. Testy responsywne

Sprawdź na urządzeniach:

  • Smartfony
  • Tablety
  • Laptopy
  • Ekrany 4K

3. Testy wydajnościowe

Optymalizuj:

  • Czas ładowania
  • Użycie pamięci
  • Liczba zapytań
  • Rozmiar plików

Best practices:

1. Logowanie

Dodaj do bloku:

  • console.log dla debugowania
  • error handling
  • warunkowe logowanie
  • czyszczenie logów

2. Testy automatyczne

Implementuj:

  • Unit testy dla funkcji
  • Integration testy dla bloków
  • E2E testy dla przepływów
  • Visual regression testy

Narzędzia ułatwiające tworzenie bloków

Rynek oferuje wiele narzędzi, które znacznie przyspieszają i ułatwiają proces tworzenia bloków Gutenberga. Wybór odpowiednich narzędzi może zdecydowanie wpłynąć na efektywność pracy.

Narzędzia deweloperskie:

1. @wordpress/scripts

Oficjalny zestaw narzędzi:

  • Automatyczna kompilacja
  • Obsługa Babel i Webpack
  • Linting i formatowanie
  • Watch mode

2. @wordpress/create-block

Generator bloków:

  • Szablony bloków
  • Automatyczna konfiguracja
  • Best practices
  • Szybki start

3. VS Code Extensions

Rozszerzenia edytora:

  • WordPress Snippets
  • Block Editor Tools
  • PHP Intelephense
  • ESLint i Prettier

Biblioteki komponentów:

1. @wordpress/components

Oficjalne komponenty:

  • Gotowe UI elements
  • Spójny design
  • Dokumentacja
  • Regularne aktualizacje

2. @wordpress/element

Wrapper dla React:

  • Uproszczony API
  • Integracja z WordPress
  • Optymalizacja wydajności
  • Hooki WordPress

3. Zewnętrzne biblioteki

Dodatkowe komponenty:

  • Material-UI
  • Ant Design
  • Chakra UI
  • Styled Components

Wtyczki ułatwiające pracę:

1. Block Developer Tools

Narzędzia deweloperskie:

  • Inspekcja bloków
  • Podgląd atrybutów
  • Debugowanie
  • Testowanie

2. Query Monitor

Monitorowanie wydajności:

  • Zapytania do bazy
  • Czas wykonania
  • Użycie pamięci
  • Błędy PHP

3. WP CLI

Linia komend:

  • Zarządzanie blokami
  • Budowanie projektów
  • Automatyzacja
  • Deploy

Frameworki i generatory:

1. Genesis Custom Blocks

Framework dla bloków:

  • Struktura projektu
  • Gotowe komponenty
  • Best practices
  • Dokumentacja

2. Lazy Blocks

Wizualny budowniczy:

  • Bez kodowania
  • Interfejs graficzny
  • Dynamiczne bloki
  • Eksport kodu

3. Carbon Fields

Biblioteka pól:

  • Zaawansowane pola
  • Integracja z blokami
  • Wydajność
  • Elastyczność

Wybór narzędzi:

Dla początkujących:

  • @wordpress/create-block
  • Block Developer Tools
  • VS Code z podstawowymi rozszerzeniami
  • Lazy Blocks dla prostych bloków

Dla zaawansowanych:

  • Własna konfiguracja Webpack
  • Custom framework
  • Automatyzacja przez WP CLI
  • Testy automatyczne

Jeśli interesuje Cię głębsze zrozumienie edytora blokowego WordPress, polecam przeczytać artykuł: Full Site Editing (FSE) – jak tworzyć motywy blokowe w Gutenbergu, gdzie znajdziesz więcej szczegółów na temat zaawansowanych możliwości edytora blokowego WordPress.

Podsumowanie – rozwijanie własnych bloków

Tworzenie własnych bloków Gutenberga to potężna umiejętność, która otwiera nowe możliwości w tworzeniu unikalnych i funkcjonalnych stron WordPress. Zrozumienie podstawowych koncepcji i panowanie nad narzędziami deweloperskimi pozwala na tworzenie zaawansowanych komponentów.

Kluczowe korzyści:

  • Pełna kontrola nad wyglądem – niestandardowe bloki pozwalają na stworzenie unikalnego designu
  • Spójność interfejsu – własne komponenty zapewniają jednolity wygląd całej strony
  • Wydajność – zoptymalizowane bloki działają szybciej niż gotowe rozwiązania
  • Reużywalność – raz stworzone bloki można używać wielokrotnie
  • Elastyczność – możliwość dostosowania do specyficznych potrzeb projektu

Najlepsze praktyki:

  • Planuj strukturę – zanim zaczniesz kodować, zaprojektuj architekturę bloku
  • Używaj komponentów – modularny kod jest łatwiejszy w utrzymaniu
  • Testuj regularnie – weryfikuj działanie na różnych urządzeniach
  • Dokumentuj kod – ułatw sobie i innym pracę w przyszłości
  • Optymalizuj wydajność – dbaj o szybkość ładowania bloków

Dalszy rozwój:

Po opanowaniu podstaw tworzenia bloków warto zgłębić bardziej zaawansowane tematy:

  • Dynamiczne bloki – renderowanie po stronie serwera
  • Integracja z API – pobieranie danych z zewnętrznych źródeł
  • Wzorce bloków – tworzenie reużywalnych szablonów
  • Animacje i interakcje – zaawansowane efekty wizualne
  • Dostępność – zapewnienie zgodności ze standardami WCAG

Zasoby do nauki:

  • WordPress Block Editor Handbook – oficjalna dokumentacja
  • Learn WordPress – darmowe kursy i tutoriale
  • WordPress Developer Resources – materiały dla deweloperów
  • Fora i społeczności – wymiana doświadczeń
  • Kursy online – strukturalna nauka od podstaw

Pamiętaj – tworzenie bloków to proces ciągłego uczenia się. Im więcej będziesz eksperymentować i tworzyć, tym lepsze staną się Twoje umiejętności. Zacznij od prostych bloków, a następnie stopniowo przechodź do bardziej zaawansowanych rozwiązań.

Potrzebujesz profesjonalnych niestandardowych bloków Gutenberga dla swojej strony WordPress? Chętnie pomożemy Ci stworzyć unikalne bloki dopasowane do Twoich potrzeb. Skontaktuj się z nami, aby uzyskać w pełni spersonalizowane rozwiązania dla Twojej witryny.