
📋 Pełna ściąga po WordPress
Otworzyli Państwo functions.php i zapomnieli, jak podpiąć sidebar? To zdarza się każdemu, kto ręcznie koduje motyw WordPress. Potrzebna jest jedna strona pod ręką, a nie dziesięć zakładek developer.wordpress.org.
Zebrano tu fundamenty tworzenia motywów dla WordPress: 13 plików szablonu i hierarchia ich wyboru, podstawowa Pętla, znaczniki dołączające i parametry bloginfo(), a dalej hooki i filtry, znaczniki warunkowe, podpinanie skryptów, shortkody, WP_Query, escapowanie danych, REST API oraz polecenia WP-CLI. Wszystkie przykłady kodu są działające. Proszę trzymać tę zakładkę otwartą podczas pracy i sprawdzać na bieżąco.
💡 Szybki przegląd:
- Proszę zapisać stronę w zakładkach i trzymać ją otwartą w osobnej karcie podczas kodowania motywu.
- Proszę zacząć od sekcji „Anatomia motywu": utworzyć pliki motywu według listy, zanim zaczną Państwo pisać kod.
- Proszę skopiować podstawową Pętlę WordPress do
index.phpi obudować ją znacznikami dołączającymi nagłówek, sidebar i stopkę. - Proszę wstawiać znaczniki
bloginfo()iget_bloginfo()z tabeli bezpośrednio do szablonów, sprawdzając z kolumną „Co zwraca". - Przed publikacją proszę przejść według zasad dla
style.css: zwalidować CSS, zminifikować i dodać style wydruku. - Dalej na stronie, kompendium: hierarchia szablonów, hooki i filtry, znaczniki warunkowe, podpinanie skryptów, shortkody,
WP_Query, escapowanie, REST API i WP-CLI.
Anatomia motywu WordPress

Motyw WordPress, to zestaw plików PHP, połączonych wspólną logiką i podporządkowanych hierarchii szablonów. Kluczowy komponent: style.css, odpowiada za wygląd wizualny i jednocześnie służy jako identyfikator motywu w panelu administracyjnym. Fundamentem każdego klasycznego motywu są jednak właśnie szablony PHP: każdy odpowiada za swój obszar strony i jest wywoływany w kolejności określonej przez hierarchię WordPress.
Do stworzenia standardowego motywu potrzebne są następujące pliki, trzynaście sztuk, a każdy obsługuje konkretną strefę witryny:
- header.php, sekcja
<head>i górna część strony: metadane, tytuł witryny, podpięciestyle.css, otwierający znacznik<body>. - index.php, główny szablon, punkt wejścia. Za pomocą znaczników dołączających zbiera pozostałe pliki w jedną stronę. Jeśli nie ma wyspecjalizowanego szablonu, WordPress przechodzi do
index.php. - sidebar.php, panel boczny: widgety, kategorie, wyszukiwarka, dodatkowe menu.
- footer.php, stopka: copyright, linki do mediów społecznościowych, skrypty analityczne, zamykające znaczniki
</body></html>. - page.php, szablon dla stron (treść statyczna, „O nas", „Kontakt").
- single.php, szablon pojedynczego wpisu na blogu.
- comments.php, blok komentarzy i formularz ich dodawania.
- 404.php, strona błędu 404. Jeśli tego pliku nie ma, WordPress pokazuje standardowy komunikat systemowy, co jest gorsze dla odwiedzającego.
- search.php, szablon wyników wyszukiwania.
- searchform.php, formularz wyszukiwania (w klasycznych motywach; współczesne często ograniczają się do widgetu).
- archive.php, szablon archiwów: kategorie, tagi, archiwa dat.
- functions.php, funkcjonalne serce motywu: niestandardowe hooki, podpinanie skryptów i stylów, rejestracja menu, obszarów widgetów, niestandardowe typy wpisów. Wszystko, co dodaje motywowi funkcjonalności, znajduje się tutaj.
- style.css, jedyny NIE-PHP plik na liście, ale bez niego motyw nie istnieje: to właśnie on przechowuje nagłówek motywu i definiuje wygląd witryny.
Można obejść się mniejszą liczbą szablonów, na przykład index.php + style.css już tworzą minimalny motyw. Jednak dla pełnoprawnej witryny lepiej trzymać wszystkie trzynaście: każdy plik jest dostosowany do swojego zadania, a WordPress sam wybiera właściwy według hierarchii. Typowy index.php wygląda tak:
1 <?php get_header(); ?> 2 3 <!-- Основной контент, включая Цикл --> 4 5 <?php get_sidebar(); ?> 6 <?php get_footer(); ?>
Przechodzimy dalej, do najważniejszego fragmentu kodu, bez którego nie wyświetli się żaden wpis.
Pętla WordPress
Pętla (The Loop), to centralny mechanizm wyświetlania treści. Bez niej musieliby Państwo ręcznie kodować wyświetlanie każdego posta i każdej strony w szablonie motywu. Pętla robi dokładnie to, co obiecuje nazwa: przechodzi przez wszystkie wpisy, które odpowiadają bieżącemu zapytaniu, i dla każdego stosuje wskazany przez Państwa znacznik HTML/PHP.
Podstawowa składnia Pętli:
1 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 2 <!-- HTML-разметка и теги шаблона для каждой записи --> 3 <?php endwhile; endif; ?>
have_posts() sprawdza, czy są wpisy do wyświetlenia. Jeśli tak, the_post() inicjalizuje wewnętrzny wskaźnik WordPress na bieżący wpis, po czym wewnątrz Pętli stają się dostępne dziesiątki znaczników szablonu: the_title() dla tytułu, the_content() dla treści wpisu, the_permalink() dla linku, the_excerpt() dla zajawki i wiele innych.
Pętlę zazwyczaj umieszcza się w index.php do wyświetlania listy wpisów, ale nic nie stoi na przeszkodzie, aby używać jej w single.php, page.php lub archive.php, logika jest ta sama, różni się tylko kontekst. Wewnątrz Pętli proszę dodawać dowolne opakowania HTML i znaczniki PHP, WordPress zastosuje je do każdego wpisu po kolei.
Praktyczny przykład, wyświetlenie tytułu i daty każdego wpisu:
1 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 2 <article> 3 <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 4 <time><?php echo get_the_date(); ?></time> 5 </article> 6 <?php endwhile; endif; ?>
Teraz o tym, jak Pętla współdziała z resztą motywu, poprzez znaczniki dołączające.
Znaczniki dołączające szablonu
Znaczniki dołączające (Include Tags), to funkcje PHP, które ładują zawartość jednego pliku motywu do drugiego. Tworzą one szkielet typowego index.php: nagłówek, treść, sidebar, stopka. Cztery podstawowe funkcje:
<?php get_header(); ?>, dołączaheader.php. Zazwyczaj pierwsza linia windex.phpi każdym innym szablonie, gdzie potrzebny jest nagłówek.<?php get_sidebar(); ?>, dołączasidebar.php. Jeśli panel boczny nie jest potrzebny, proszę po prostu usunąć wywołanie.<?php get_footer(); ?>, dołączafooter.php. Zawsze na końcu szablonu, zamyka stronę.<?php comments_template(); ?>, dołączacomments.php. Umieszcza się wewnątrzsingle.php, po wyświetleniu treści wpisu.
Wszystkie cztery funkcje szukają plików w folderze aktywnego motywu. Jeśli pliku nie ma, WordPress po prostu nic nie wyświetla (z wyjątkiem get_header() i get_footer(), ich brak zepsuje układ strony).
Następny poziom, znaczniki, które nie tylko dołączają pliki, ale wydobywają dane z bazy.
Znaczniki bloginfo

Znaczniki bloginfo() wydobywają informacje o witrynie z bazy danych WordPress, te same, które wypełniają Państwo w Ustawienia → Ogólne oraz w profilu użytkownika. Funkcja zwraca ciąg znaków i od razu wyświetla go na ekranie. Najczęściej używane parametry:
Parametr | Co zwraca |
|---|---|
| Tytuł witryny |
| URL witryny |
| Slogan (opis) witryny |
| Kodowanie (domyślnie UTF-8) |
| URL pliku |
| Wersja zainstalowanego WordPress |
| Język witryny |
| URL kanału RSS (RSS 0.92) |
| URL kanału RSS (RSS 2.0) |
To tylko wierzchołek góry lodowej, pełna lista parametrów znajduje się w dokumentacji WordPress.
Get_bloginfo(), gdy trzeba nie wyświetlić, a zapisać
W przypadkach, gdy informacje o witrynie trzeba wykorzystać w kodzie, a nie tylko pokazać na stronie, stosuje się funkcję get_bloginfo():
1 <?php $info = get_bloginfo( $show, $filter ); ?>
$show, słowo kluczowe. Obsługiwane są wartości'name'(tytuł),'url'(adres),'description'(slogan),'admin_email'(email administratora) i inne; pełna lista w dokumentacji.$filter, tryb filtrowania:'raw'(wartość „jak jest", domyślnie) lub'display'(wartość przepuszczana przezwptexturize(), przekształca cudzysłowy, myślniki, znaki).
Przykład: pobieramy opis witryny i wyświetlamy z prefiksem:
1 <?php $site_description = get_bloginfo( 'description' ); ?> 2 <?php echo 'Слоган вашего сайта: ' . esc_html( $site_description ); ?>
Rezultat: „Slogan Państwa witryny: Najlepsze premium motywy WordPress".
Oprócz bloginfo, WordPress ma rozbudowany system tagów szablonu: tagi ogólne, tagi autorów, miniaturek, kategorii, linków, wszystkie działają zarówno wewnątrz Pętli, jak i poza nią, a ich kombinacje dają pełną kontrolę nad wyświetlaniem treści.
Tabela stylów motywu
style.css pełni dwie role. Pierwsza, identyfikacyjna: nagłówek na samej górze pliku informuje WordPress o nazwie motywu, autorze, wersji, licencji. Druga, wizualna: wszystkie reguły CSS sterujące wyglądem witryny. Standardowy nagłówek wygląda następująco:
1 /* 2 Theme Name: Название темы 3 Theme URI: https://www.example.com/theme 4 Author: Ваше Имя 5 Author URI: https://www.example.com/ 6 Description: Адаптивная тема WordPress с поддержкой... 7 Version: 1.0 8 License: GNU General Public License v2 or later 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html 10 Tags: responsive, two-columns, right-sidebar, custom-header 11 Text Domain: mythemename 12 */
Zasady dobrego tonu podczas pracy z style.css:
- Proszę przestrzegać standardów kodowania CSS WordPress, jednolity styl ułatwia utrzymanie.
- Proszę sprawdzać CSS pod kątem poprawności za pomocą walidatora W3C.
- Proszę minifikować CSS na produkcji, ale pozostawiać czytelny kod źródłowy do celów deweloperskich.
- Proszę dodawać style dla druku (
@media print), wielu czytelników drukuje artykuły. - Proszę stylizować wszystkie standardowe elementy HTML, które mogą wystąpić w treści wpisu.
Hierarchia szablonów WordPress
Dla każdego żądania WordPress sam decyduje, który plik PHP motywu podłączyć, to właśnie jest hierarchia szablonów. Zasada jest jedna: od najbardziej szczegółowego pliku do najbardziej ogólnego, a index.php to ostatnia opcja zapasowa dla każdej gałęzi. Znajomość kolejności usuwa pytanie „dlaczego edycja w single.php nie jest widoczna na stronie kategorii".
1 Отдельная запись → single-{post_type}-{slug}.php → single-{post_type}.php → single.php → singular.php → index.php 2 Страница → {шаблон из редактора}.php → page-{slug}.php → page-{id}.php → page.php → singular.php → index.php 3 Рубрика → category-{slug}.php → category-{id}.php → category.php → archive.php → index.php 4 Архив → archive-{post_type}.php → archive.php → index.php 5 Поиск → search.php → index.php 6 Ошибка 404 → 404.php → index.php 7 Главная → front-page.php → home.php → index.php
WordPress bierze pierwszy istniejący plik od lewej do prawej. Dlatego single-product.php nadpisze single.php tylko dla wpisów typu product, nie naruszając reszty.
Hooki: akcje i filtry
Hooki to punkty rozszerzeń WordPress: umożliwiają wpięcie się w działanie rdzenia bez edytowania jego plików. Akcje (actions) wykonują efekt uboczny (podłączenie skryptu, wysłanie maila), filtry (filters) otrzymują wartość, zmieniają ją i muszą zwrócić z powrotem. Zapomniany return w filtrze to najczęstsza przyczyna pustej treści.
1 // Регистрация 2 add_action( 'имя_хука', 'callback', 10, 1 ); // приоритет, число аргументов 3 add_filter( 'имя_хука', 'callback', 10, 1 ); 4 5 // Вызов (в ядре или своём коде) 6 do_action( 'имя_хука', $arg ); // действие: ничего не возвращает 7 apply_filters( 'имя_хука', $value, $arg ); // фильтр: ВОЗВРАЩАЕТ значение 8 9 // Удаление (приоритет должен совпадать с тем, что был при добавлении) 10 remove_action( 'имя_хука', 'callback', 10 );
Przykład: dodać akapit na końcu każdego wpisu:
1 add_filter( 'the_content', 'my_append_note', 20 ); 2 function my_append_note( $content ) { 3 return $content . '<p>Спасибо за чтение!</p>'; // без return контент исчезнет 4 }
Kluczowe hooki motywu:
after_setup_theme, rejestracja wsparcia funkcji (add_theme_support()), menu, rozmiarów miniaturek.wp_enqueue_scripts, jedyne poprawne miejsce do podłączania CSS i JS frontendu.init, wczesna inicjalizacja: rejestracja typów wpisów i shortkodów.the_content, filtrowanie HTML wpisu przed wyświetleniem.
Niższy priorytet, wcześniejsze wykonanie (domyślnie 10). Aby callback otrzymał więcej niż jeden argument, należy zwiększyć czwarty parametr accepted_args.
Tagi warunkowe
Tagi warunkowe (Conditional Tags) to funkcje, które zwracają true lub false w zależności od tego, która strona jest aktualnie otwarta. Na nich buduje się logikę „tutaj pokazujemy sidebar, a na 404 nie".
1 is_home() // блоговая лента записей 2 is_front_page() // главная страница сайта 3 is_single() // отдельная запись 4 is_page() // отдельная страница 5 is_singular() // любая одиночная запись/страница/CPT 6 is_archive() // любой архив 7 is_category() // архив рубрики 8 is_search() // страница результатов поиска 9 is_404() // страница ошибки 404 10 is_user_logged_in() // пользователь авторизован 11 is_admin() // запрос идёт в админке (НЕ «пользователь администратор»)
Główna pułapka: zapytaniowe tagi warunkowe (is_single, is_page, is_home i inne) działają dopiero po utworzeniu głównego zapytania, czyli wewnątrz plików szablonu i Pętli lub począwszy od hooka template_redirect. Wywołanie na początku functions.php lub na init jest zbyt wczesne: WordPress zgłosi _doing_it_wrong() i zwróci nieprawidłowy wynik. Wyjątki, is_admin() i is_user_logged_in(), nie zależą od zapytania i są dostępne wcześniej. I proszę pamiętać: is_admin() sprawdza kontekst (panel administracyjny kontra frontend), a nie rolę; do sprawdzenia roli należy używać current_user_can( 'manage_options' ).
Podłączanie skryptów i stylów
Pokusa, by wpisać <link> i <script> bezpośrednio w header.php, jest duża, ale to błąd: traci się kontrolę nad zależnościami, wersjonowanie do czyszczenia cache, strategie defer/async i ochronę przed podwójnym załadowaniem (dwie wtyczki z łatwością podłączą jQuery dwukrotnie). Prawidłowa droga to kolejka WordPress na hooku wp_enqueue_scripts.
1 add_action( 'wp_enqueue_scripts', 'my_theme_assets' ); 2 function my_theme_assets() { 3 // Стиль темы с версией из заголовка style.css 4 wp_enqueue_style( 5 'my-theme', 6 get_stylesheet_uri(), 7 array(), 8 wp_get_theme()->get( 'Version' ) 9 ); 10 11 // Скрипт с зависимостью и современным синтаксисом (WP 6.3+) 12 wp_enqueue_script( 13 'my-app', 14 get_theme_file_uri( 'assets/js/app.js' ), 15 array( 'jquery' ), // зависимости 16 '1.0.0', // версия → сброс кеша 17 array( 18 'in_footer' => true, 19 'strategy' => 'defer', 20 ) 21 ); 22 }
Począwszy od WordPress 6.3, ostatnim parametrem wp_enqueue_script() jest tablica $args (in_footer, strategy), choć stara forma z wartością logiczną true dla stopki nadal działa. Dla frontendu należy używać wp_enqueue_scripts, dla panelu administracyjnego admin_enqueue_scripts, dla strony logowania login_enqueue_scripts.
Shortkody
Shortkody przekształcają krótki zapis w nawiasach kwadratowych na dowolny HTML, wygodne do przycisków, galerii i formularzy wewnątrz treści. Procedura obsługi musi zwrócić ciąg znaków, a nie wypisywać go przez echo, w przeciwnym razie wynik „wyskoczy" na początek strony.
1 add_shortcode( 'btn', 'my_button_shortcode' ); 2 function my_button_shortcode( $atts, $content = null, $tag = '' ) { 3 $a = shortcode_atts( 4 array( 'url' => '#', 'label' => 'Кнопка' ), 5 $atts, 6 $tag 7 ); 8 return sprintf( 9 '<a class="btn" href="%s">%s</a>', 10 esc_url( $a['url'] ), // экранируем на выводе 11 esc_html( $a['label'] ) 12 ); 13 } 14 // Использование в записи: [btn url="https://example.com" label="Купить"]
shortcode_atts() nakłada atrybuty użytkownika na wartości domyślne. Jeśli trzeba wykonać shortkody wewnątrz ciągu znaków lub szablonu, należy go opakować w do_shortcode(), ale aby wywołać własną funkcję, należy wołać ją bezpośrednio, bez pośrednika.
WP_Query i zapytania niestandardowe
WP_Query to klasa do wszelkich pobrań wpisów: ostatnie wiadomości w sidebarze, zestawienie według kategorii, strumień niestandardowego typu. Po swojej pętli koniecznie należy wywołać wp_reset_postdata(), w przeciwnym razie tagi szablonu dalej na stronie otrzymają nie ten wpis.
1 $q = new WP_Query( array( 2 'post_type' => 'post', 3 'posts_per_page' => 5, 4 'category_name' => 'news', 5 'orderby' => 'date', 6 'order' => 'DESC', 7 ) ); 8 9 if ( $q->have_posts() ) { 10 while ( $q->have_posts() ) { 11 $q->the_post(); 12 the_title( '<h3>', '</h3>' ); 13 } 14 wp_reset_postdata(); // вернуть глобальный $post 15 }
Aby zmienić główne zapytanie strony (na przykład liczbę wpisów na stronie głównej), nie należy używać przestarzałego query_posts(), generuje ono dodatkowe zapytanie do bazy danych i psuje paginację. Prawidłowo, hook pre_get_posts, który zmienia zapytanie przed jego wykonaniem:
1 add_action( 'pre_get_posts', 'my_main_query' ); 2 function my_main_query( $query ) { 3 if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) { 4 $query->set( 'posts_per_page', 12 ); 5 } 6 }
Bezpieczeństwo: eskejpowanie i sanityzacja
Złota zasada WordPressa: sanityzujemy na wejściu, eskejpujemy na wyjściu, sprawdzamy wszędzie. Wszelkie dane od użytkownika czyścimy przed zapisem w bazie i eskejpujemy przed wypisaniem w HTML, nawet jeśli były już wcześniej czyszczone.
1 // Экранирование НА ВЫВОДЕ 2 echo esc_html( $text ); // текст внутри тега 3 echo esc_attr( $value ); // значение атрибута 4 echo esc_url( $href ); // ссылки href/src 5 echo wp_kses_post( $rich_html ); // безопасный набор HTML для контента 6 7 // Санитизация НА ВХОДЕ (перед записью в БД) 8 $clean = sanitize_text_field( $_POST['name'] ); 9 $email = sanitize_email( $_POST['email'] ); 10 $num = absint( $_POST['count'] );
Formularze i akcje zabezpieczamy nonce, jednorazowym tokenem przeciw CSRF:
1 // В форме: 2 wp_nonce_field( 'my_save_action', 'my_nonce' ); 3 4 // При обработке: 5 if ( ! isset( $_POST['my_nonce'] ) || 6 ! wp_verify_nonce( $_POST['my_nonce'], 'my_save_action' ) ) { 7 return; // запрос отклонён 8 }
W praktyce większość podatności motywów i wtyczek to właśnie pominięte eskejpowanie wyjścia. Proszę przyjąć nawyk: żadna zmienna nie trafia do HTML bez esc_*.
REST API WordPressa
REST API udostępnia dane witryny w formacie JSON, korzystają z niego aplikacje mobilne, frontendy headless i integracje. Adres bazowy: /wp-json/wp/v2/.
1 GET /wp-json/wp/v2/posts // записи 2 GET /wp-json/wp/v2/pages // страницы 3 GET /wp-json/wp/v2/media // медиафайлы 4 GET /wp-json/wp/v2/users // пользователи 5 GET /wp-json/wp/v2/posts/123 // одна запись 6 GET /wp-json/wp/v2/posts?per_page=5&search=тема&_embed
Własną trasę rejestruje się na haku rest_api_init. Parametr permission_callback jest obowiązkowy, bez niego WordPress wygeneruje ostrzeżenie; dla publicznego odczytu należy ustawić '__return_true'.
1 add_action( 'rest_api_init', function () { 2 register_rest_route( 'myplugin/v1', '/items/(?P<id>\d+)', array( 3 'methods' => 'GET', 4 'callback' => 'my_get_item', 5 'permission_callback' => '__return_true', 6 ) ); 7 } );
WP-CLI: komendy pod ręką
WP-CLI zarządza witryną z terminala, szybciej i pewniej niż klikanie w panelu administracyjnym, szczególnie przy obsłudze wielu witryn. Najczęściej używane:
1 wp core update # обновить ядро WordPress 2 wp core version # какая версия установлена 3 wp plugin install akismet --activate # установить и сразу включить плагин 4 wp plugin list # список плагинов со статусом и версией 5 wp theme activate twentytwentyfive # сменить активную тему 6 wp db export backup.sql # дамп базы в файл 7 wp search-replace 'old.com' 'new.com' --dry-run # сначала всегда сухой прогон 8 wp user create bob [email protected] --role=editor # создать пользователя 9 wp cache flush # сбросить объектный кеш
wp search-replace rozumie dane zserializowane, dlatego bezpiecznie zmienia domenę podczas przenoszenia witryny, w przeciwieństwie do bezpośredniego zapytania SQL, które psuje serializację. Przed każdą niebezpieczną operacją należy wykonać wp db export.
Motywy klasyczne i blokowe w 2026 roku
Do połowy 2026 roku (aktualna wersja, WordPress 7.0 „Armstrong", zalecane PHP 8.3+) klasyczne motywy PHP są nadal w pełni wspierane i pozostają najpowszechniejszym typem. Jednak całe nowe narzędzia rdzenia rozwijają motywy blokowe i pełną edycję witryny (Full Site Editing): theme.json zamiast części ustawień functions.php, szablony HTML zamiast PHP. Pętla, bloginfo(), znaczniki warunkowe i haki są aktualne zarówno w motywach hybrydowych, jak i we wszelkich fragmentach PHP wewnątrz motywu FSE, więc ta ściąga nie traci na wartości. Praktyczna ścieżka w 2026 roku: klasyczna podstawa plus punktowe wsparcie bloków tam, gdzie jest ono naprawdę potrzebne.
⁉️🤔 Często zadawane pytania
Czy trzeba tworzyć wszystkie 13 plików dla szablonu?
Nie, minimalny działający szablon to
index.php+style.css. Jednak dla pełnoprawnej witryny lepiej trzymać kompletny zestaw: każdy plik daje WordPressowi możliwość wyboru optymalnego szablonu. Na przykład bezsingle.phpwpis zostanie wyrenderowany przezindex.phpi straci blok komentarzy.
Czym get_bloginfo() różni się od bloginfo()?
bloginfo() od razu wypisuje wartość na ekran (echo). get_bloginfo() zwraca ciąg znaków do zmiennej, można go przetworzyć, uzupełnić lub użyć wewnątrz innego wyrażenia przed faktycznym wyświetleniem.
Gdzie umieścić Pętlę, jeśli na stronie jest kilka typów treści?
Pętlę można uruchamiać wielokrotnie. Typowy scenariusz: jedna Pętla dla głównej listy wpisów, druga dla widżetu „ostatnie wiadomości" w pasku bocznym. Przed drugą Pętlą należy zresetować wskaźnik za pomocą wp_reset_postdata(), w przeciwnym razie kolejny kod na stronie otrzyma nieprawidłowy kontekst wpisu.
Czy ta ściąga działa dla szablonów blokowych (FSE)?
Częściowo. Szablony blokowe (Full Site Editing) używają
theme.jsonzamiastfunctions.phpdo wielu ustawień oraz szablonów w HTML, a nie PHP. Ale Pętla,bloginfo()i znaczniki dołączające pozostają aktualne dla szablonów hybrydowych i wszelkich szablonów PHP wewnątrz szablonu FSE.
Co zrobić, gdy functions.php staje się zbyt duży?
Należy rozbić logikę na osobne pliki i dołączać je z
functions.phpprzezrequire_oncelubinclude. Na przykład:require_once get_template_directory() . '/inc/custom-post-types.php';. Poprawia to czytelność i ułatwia utrzymanie, to zasada dobrego tonu dla każdego szablonu z więcej niż 20-30 zaczepami.
Czym akcja (action) różni się od filtra (filter)?
Akcja wykonuje efekt uboczny i nic nie zwraca (podłączyć skrypt, wysłać e-mail). Filtr otrzymuje wartość, zmienia ją i musi ją zwrócić, zapomniany
returnw filtrze wyzeruje zawartość. Rejestruje się je identycznie:add_action()iadd_filter().
Dlaczego is_single() nie działa w functions.php?
Warunkowe znaczniki zapytania są dostępne dopiero po sformowaniu głównego zapytania, czyli w plikach szablonu lub począwszy od zaczepu
template_redirect. Na początkufunctions.phpzapytanie nie jest jeszcze gotowe, dlatego WordPress zgłosi_doing_it_wrong(). Bez powiązania z zapytaniem działają tylkois_admin()orazis_user_logged_in().
Co mieć pod ręką podczas pracy z WordPressem
Ta ściąga to szkielet, od którego zaczyna się pracę z WordPressem. Pliki szablonu i hierarchia szablonów, Pętla, znaczniki dołączające i bloginfo() składają szablon, a zaczepy i filtry, znaczniki warunkowe, podłączanie skryptów, shortkody, WP_Query, eskejpowanie, REST API i WP-CLI pokrywają zdecydowaną większość rutynowych zadań. Reszta to praktyka i dokumentacja.
Do pogłębionej nauki podręcznik tworzenia szablonów na developer.wordpress.org, to pierwszy adres. Tam też znajduje się spis znaczników szablonu z setkami funkcji na każdą okazję. Jeśli przechodzą Państwo ścieżkę od układu HTML do gotowego szablonu, proszę zacząć od przewodnika krok po kroku, jak stworzyć szablon WordPress z HTML, gdzie Pętla i znaczniki są omówione w bojowym kontekście, od układu graficznego do działającego szablonu.
Proszę dodać tę ściągę do zakładek i mieć ją pod ręką podczas pracy.
Którego znacznika lub zaczepu szukają Państwo najczęściej? Proszę napisać w komentarzach, z jakim zadaniem w WordPressie się Państwo zetknęli, i podzielić się swoim przypadkiem, żywa wymiana doświadczeń jest warta tuzina oficjalnych podręczników.



