Spis treści
- Wprowadzenie – dlaczego warto tworzyć własne bloki
- Struktura bloku Gutenberga
- Przygotowanie środowiska deweloperskiego
- Tworzenie prostego bloku krok po kroku
- Rejestracja bloku w WordPress
- Dodawanie atrybutów i pól konfiguracyjnych
- Styling bloków w edytorze i na froncie
- Debugowanie i testowanie bloków
- Narzędzia ułatwiające tworzenie bloków
- Podsumowanie – rozwijanie własnych bloków
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:
- Uruchom terminal w folderze wtyczek
- Wykonaj komendę: npx @wordpress/create-block nazwa-bloku
- Postępuj zgodnie z instrukcjami
- Uruchom
npm start
Metoda 2: Ręczna konfiguracja
Dla pełnej kontroli nad projektem:
- Stwórz folder wtyczki
- Utwórz plik główny wtyczki
- Skonfiguruj
package.json - Zainstaluj zależności
- 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:
- Użyj funkcji register_block_type
- Podaj ścieżkę do pliku block.json
- WordPress automatycznie załaduje blok
- Dodaj skrypty i style
Metoda 2: Ręczna rejestracja
Dla pełnej kontroli:
- Zarejestruj skrypty bloku
- Dodaj style CSS
- Użyj funkcji register_block_type
- 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:
- Hook do init
- Rejestracja skryptów
- Rejestracja bloków
- 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
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.