Od zera do biegłości: kompletny przewodnik po tworzeniu motywów WordPress wraz z praktycznymi poradami.

3 minuty na przeczytanie.
2026-03-17
2026-06-03
2,086
Zarabiam prowizję, gdy robisz zakupy poprzez poniższe linki, bez żadnych dodatkowych kosztów dla Ciebie.

Podstawowe koncepcje i zasady rozwoju tematów dla WordPress

Przed rozpoczęciem pisania jakiegoś kodu istotne jest zrozumienie kluczowych conceptów tematów WordPress. Temat WordPress to w istocie zbiór plików, które definiują wygląd witryny internetowej – od układu stron po kolory i styl fontów. Temat stosuje określoną strukturę katalogów i interaguje z podstawowym systemem WordPress, aby dynamicznie prezentować treści.

Podstawa temy jest plik szablonu. Te pliki zbudowane w języku PHP decydują o sposobie wyświetlania różnych typów treści. Na przykład…index.phpTo jest plik szablonu głównego, który jest używany w przypadku, gdy WordPress nie może znaleźć bardziej specyficznego szablonu. Strona główna jest zwykle tworzona na podstawie tego pliku.home.phpfront-page.phpKontrola: Każdy tekst publikowany jako pojedyncza artykułka…single.phpKontrola jest realizowana przez… Natomiast strona jest tworzona przez…page.phpKontrola.

Kolejnym kluczowym plikiem jest…style.cssNie jest to tylko zbiór wszystkich plików z stylami dla tematu, ale także “dowód tożsamości” tego tematu. Blok komentarzy na początku tego pliku zawiera ważne metadane, takie jak nazwa tematu, autor, opis, numer wersji itd. Bez tych informacji plik nie będzie funkcjonować poprawnie.style.cssWordPress nie będzie w stanie rozpoznać twojego tematu. Jego podstawowa struktura jest następująca:

Polecamy lekturę. Kompletny przewodnik po tworzeniu motywów w WordPressie: od podstaw do zaawansowanych technik.

/*
Theme Name: 我的第一个主题
Theme URI: https://example.com/my-first-theme
Author: 开发者名称
Author URI: https://example.com
Description: 这是一个为学习而创建的WordPress主题。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-first-theme
*/

Struktura pierwszego pliku tematycznego:

Aby stworzyć temat o pełnej funkcjonalności i jasnej strukturze, należy stosować standardowe zasady organizacji katalogów i plików. Podstawowy, ale kompletny temat można zbudować na bazie kilku kluczowych plików.

UltaHost – hostingu dla stron WordPress
Gwarancja zwrotu pieniędzy w ciągu 30 dni, nieograniczony przepustowość sieci i dostęp do bazy danych, bezpłatna ochrona przed atakami typu DDoS. Promocja: 50% przy zakupie na 3 lata.

Ponadto…index.phpstyle.cssPonadto, solidne tematyczne rozwiązanie („theme”) zawiera zwykle następujące kluczowe pliki:
1. functions.phpTo “ mózg” tematu, służący do dodawania funkcji tematów, menu rejestracji, bocznej nawigacji (obszaru widgetów), ładowania skryptów i stylów itd. Nie jest to plik szablonu, ale każdy temat powinien go zawierać.
2. header.phpStruktura HTML zawierająca nagłówek dokumentu witryny, menu nawigacyjne oraz początek strony.
3. footer.phpZawiera informacje o autorskich prawach, skrypty oraz znaki zakończenia na dole strony.
4. sidebar.phpOdpowiedź: Struktura HTML dla boku nawigacyjnego:
5. page.phpsingle.phpSą używane odpowiednio do renderowania stron statycznych i pojedynczych artykułów.

Efektywny proces rozwoju obejmuje tworzenie głównego pliku szablonu.index.phpAby załączyć te pliki, użyj funkcji szablonowych wbudowanych w WordPress:

<p><strong>Witaj na mojej stronie!</strong></p>

<main id="main">
    &lt;?php
    if ( have_posts() ) :
        while ( have_posts() ) : the_post();
            // 显示内容
            the_title( &#039;<h1>', '</h1>' );
            the_content();
        endwhile;
    else :
        echo '<p>没有找到内容。</p>';
    endif;
    ?&gt;
</main>

functions.phpW tym przypadku możesz użyć…add_action„Hakówki” służą do rejestracji nowych funkcji – na przykład do dodania wsparcia dla miniatur artykułów (specjalnych zdjęć).

<?php
// 为主题添加基本支持
function mytheme_setup() {
    // 启用文章和页面上的“特色图像”功能
    add_theme_support( 'post-thumbnails' );
    // 添加对HTML5标记的支持
    add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' ) );
    // 注册一个主导航菜单
    register_nav_menus( array(
        'primary' => __( '主导航菜单', 'my-first-theme' ),
    ) );
}
add_action( 'after_setup_theme', 'mytheme_setup' );

Wykorzystanie poziomów struktury szablonów oraz systemu nawigacji cyklicznej

Struktura poziomów szablonów w WordPress jest systemem zasad, który decyduje, jaki plik szablonu ma zostać użyty przy żądaniu określonej strony. Zrozumienie tego układu poziomów jest kluczowe dla rozwijania zaawansowanych tematów (tematów dostosowanych do potrzeb użytkowników), ponieważ umożliwia tworzenie wyjątkowo dostosowanych rozwiązań graficznych dla różnych części witryny.

Polecamy lekturę. Uczenie się tworzenia tematów dla WordPressa od zera: tworzenie personalizowanych stron internetowych

Gdy użytkownik odwiedza twoją stronę internetową, WordPress wyszukuje odpowiednie pliki szablonów na podstawie aktualnego typu treści (np. artykułu blogowego, strony, archiwu kategorii itd.). Porządek wyszukiwania jest ustalony zgodnie z zasadą od najbardziej specyficznych do najbardziej ogólnych plików szablonów. Na przykład, dla strony o ID 5 WordPress sprawdza kolejno:
1. page-5.php (Specjalnie stworzone dla tego identyfikatora strony)
2. page-sample-page.php (Wykorzystaj alternatywną nazwę strony)
3. page.php (Wszelodostępny szablon strony)
4. singular.php (Wszystkoobecny szablon dla jednego elementu treści)
5. index.php (Ostateczne wycofanie)

Podstawa wszystkich prezentacji jest “WordPress Loop” (Cykl WordPress). Jest to blok kodu w języku PHP, który służy do przetwarzania wyników aktualnej wyszukiwki i wyświetlania każdego artykułu lub strony. Podstawowa struktura tego cyklu jest podobna we wszystkich plikach szablonów.

&lt;?php
if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        // 当前文章/页面的内容在这里输出
        the_title( &#039;<h2 class="entry-title"><a href="/pl/' . esc_url( get_permalink() ) . '/">', '</a></h2>' );
        the_excerpt(); // 或使用 the_content()
    endwhile;
    the_posts_navigation(); // 文章导航链接
else :
    // 如果没有找到任何内容
    _e( '抱歉,没有找到符合您要求的内容。', 'textdomain' );
endif;
?&gt;

Aby zwiększyć modularność i łatwość konserwacji szablonów, WordPress zachęca do stosowania…get_template_part()Funkcje. Dzięki temu można oddzielić kod wykorzystywany do wyświetlania publicznych elementów (np. opisy artykułów, metadane artykułów) i umieścić go w osobnych plikach, by móc go powtarznie używać.

hosting.com Hosting współdzielony
Wysoka wydajność dzięki procesorom AMD EPYC, pamięci masowej NVMe SSD i LiteSpeed, wewnętrzne wsparcie ekspertów 24/7, zaawansowane środki bezpieczeństwa, w tym SSL, brute force, ochrona przed złośliwym oprogramowaniem i DDoS, oszczędność do 73%
// 在 archive.php 或 index.php 中
while ( have_posts() ) : the_post();
    get_template_part( 'template-parts/content', get_post_format() );
endwhile;

Ten kod będzie próbować załadować…template-parts/content-{post-format}.phpNa przykładcontent-video.phpJeśli nie istnieje, to należy go załadować.template-parts/content.php

Wysokiej klasy funkcje: narzędzie do personalizacji tematów oraz pola dostosowwalne według potrzeb użytkownika

Współczesne tematy dla WordPressu są projektowane nie tylko z myślą o estetycznym wyglądzie, ale także o ułatwieniu użytkownikom dostosowania ich do własnych potrzeb. Narzędzie do personalizacji tematów (WordPress Customizer) oferuje interfejs z możliwością prezentacji zmian w czasie rzeczywistym, dzięki czemu użytkownicy mogą modyfikować ustawienia tematu bez konieczności edycji kodu.

functions.phpW tym przypadku możesz użyć…$wp_customizeMożna używać obiektów do dodawania ustawień, kontrolerów oraz innych elementów strony. Na przykład, można dodać opcję umieszczenia tekstu autorskich praw w nagłówku strony (footer).

Polecamy lekturę. Od zera do jednego: podstawowe umiejętności i praktyczny przewodnik po tworzeniu nowoczesnych motywów WordPress.

function mytheme_customize_register( $wp_customize ) {
    // 添加一个新的设置
    $wp_customize->add_setting( 'mytheme_footer_text', array(
        'default'           => '© 2026 我的网站。保留所有权利。',
        'sanitize_callback' => 'sanitize_text_field',
        'transport'         => 'postMessage', // 实现实时预览
    ) );

// 添加一个控件来编辑这个设置
    $wp_customize->add_control( 'mytheme_footer_text', array(
        'label'    => __( '页脚版权文本', 'my-first-theme' ),
        'section'  => 'title_tagline', // 放在“站点身份”区域
        'type'     => 'text',
    ) );
}
add_action( 'customize_register', 'mytheme_customize_register' );

Następnie, wfooter.phpW tym przypadku możesz użyć…get_theme_mod()Funkcja wydaje ten wynik:

echo esc_html( get_theme_mod( 'mytheme_footer_text', '默认版权文本' ) );

Dla bardziej złożonych struktur treści metadane artykułów (dostosowane pola) oraz rozszerzenia systemu klasifikacji stanowią potężne narzędzia. Można to uzyskać za pomocą wtyczek do zaawansowanych dostosowanych pola (Advanced Custom Fields, ACF) lub funkcji dostępnych w samym WordPress. Na przykład, można dodać do artykułu pole “Czas czytania”.

Hosting współdzielony InterServer
Hosting współdzielony $2.50 USD miesięcznie, pierwszy miesiąc $0.1 USD kod promocyjny tryinterserver, 461 skryptów aplikacji w chmurze, instalacja jednym kliknięciem.
// 在 single.php 中显示自定义字段
$reading_time = get_post_meta( get_the_ID(), 'reading_time_minutes', true );
if ( $reading_time ) {
    echo '<span class="reading-time">Czas czytania: '.intval($reading_time).' minut</span>';
}

Aby stworzyć dynamiczniejsze strony, jednym z często używanych sposobów jest tworzenie własnych szablonów stron. Wystarczy dodać określony blok komentarzy na początku pliku w języku PHP, a ten szablon pojawi się w rozwijanym menu z dostępnych opcji szablonów.

<?php
/*
Template Name: 全宽页面模板
*/
get_header();
?>
<!-- 你的全宽内容布局代码 -->
<?php get_footer(); ?>

Podsumowanie.

Rozwoj tematów dla WordPress jest umiejętnością złożoną, łączącą w sobie elementy projektowania, technologii front-end oraz logiki back-end. Aby zrozumieć zasady tego procesu, należy najpierw poznać najpodstawniejsze aspekty…style.cssindex.phpNa początku należy zapoznać się z zasadami struktury szablonów oraz zasadami pracy z cyklami, co stanowi podstawę dla budowania funkcjonalnych tematów. Można to osiągnąć poprzez modularizację struktury tematu oraz skuteczne wykorzystanie dostępnych elementów.functions.phpget_template_part()Funkcje mogą znacząco poprawić łatwość utrzymania i powtórnego użycia kodu.

Na etapie rozwoju tematów dostosowanych do potrzeb użytkowników, zaawansowane mechanizmy integracji umożliwiają przyjazne i w czasie rzeczywistym dostosowywanie ustawień. Z kolei wykorzystanie zdefiniowanych polów i szablonów stron pozwala stworzyć struktury treści odpowiadające nawet najzłożniejszym wymaganiom. Dodatkowo stosowanie oficjalnych standardów programowania i najlepszych praktyk WordPress gwarantuje bezpieczeństwo, wydajność tematu oraz jego kompatybilność z całym ekosystemem WordPress. To kluczowy krok, aby Twoje umiejętności programistyczne przekroczyły poziom “możliwe” i osiągnęły poziom “doskonałości”.

FAQ – najczęściej zadawane pytania.

W jaki sposób różnią się tematy (templates) i dodatki (plugins) w WordPress?

Temat wywiera główny wpływ na wygląd i prezentację witryny internetowej na stronie klienta („front end”), a także na jej układ, kolorystykę, formatowanie tekstu oraz inne elementy wizualne. Do interakcji z systemem WordPress temat używa plików szablonów, które są związane z odpowiednią hierarchią szablonów w tym systemie.

Dodatki (plug-ins) służą do rozszerzania funkcjonalności witryny internetowej – mogą dodawać nowe elementy, takie jak formularze kontaktowe, narzędzia do optymalizacji wyszukiwarki czy funkcje e-handlu, bez zmiany jej wyglądu. Na jednej witrynie może być aktywny tylko jeden temat (theme), ale można zainstalować i uruchomić kilka dodatków.

Jak poprawnie zarejestrować style i skrypty w pliku functions.php?

Poprawny sposób to użyć…wp_enqueue_scripts„Hak” (ang. „hook”) to element, który umożliwia poprawne obsługiwanie zależności pomiędzy różnymi komponentami systemu oraz zapobieganie ich powtarzonymu ładowaniu. Poniżej znajduje się standardowy przykład jego użycia:

function mytheme_enqueue_assets() {
    // 注册并排队主样式表
    wp_enqueue_style( 'mytheme-main-style', get_stylesheet_uri(), array(), '1.0.0' );
    // 注册并排队一个自定义JavaScript文件
    wp_enqueue_script( 'mytheme-custom-script', get_template_directory_uri() . '/js/custom.js', array('jquery'), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_assets' );

Zdecydowanie nie należy używać żadnych elementów bezpośrednio w plikach szablonów.linkscriptWkładanie zasobów w kod źródłowy w formie hardcodingu nie jest zgodne z najlepszymi praktykami stosowanymi w WordPressie i może doprowadzić do konfliktów lub problemów z wydajnością.

Czym jest podtema (subtopic), czemu jest ona potrzebna i jak ją używać?

Podtema jest temą, która jest zależna od innej temy (nazywanej temą matczą). Pozwala to modyfikować lub rozszerzać funkcje i styl temy matcznej bez konieczności bezpośredniego edycji jej plików. Zaletą tego rozwiązania jest to, że gdy temat matczyna zostanie aktualizowana, twoje własne zmiany (zrealizowane w podtemie) nie zostaną wymazane, co zapewnia bezpieczeństwo i ułatwia utrzymanie systemu.

Stworzenie podtematu jest bardzo proste. Najpierw…/wp-content/themes/Utworz nowy folder w katalogu (na przykład…).mytheme-childA potem stworzyć w nim coś nowego.style.cssPlik ten musi mieć w swoim nagłówku komentarze, które są konieczne.Template:W tym przypadku należy podać nazwę katalogu tematycznego rodzicówkiego.

/*
Theme Name: 我的主题子主题
Template: my-first-theme
*/

之后,你可以在子主题的style.cssAby dodać zasady stylu, należy to zrobić w odpowiednim miejscu kodu, lub stworzyć plik z dowolnym nazwą, który będzie nakładać się na odpowiedni plik tematu rodzinnego.

Jak zrobić, aby moja tematyczna strona obsługiwała tłumaczenie w kilku językach?

Umożliwienie Twojemu tematowi obsługi języków różnych (i18n – Internationalization) i lokalizacji (l10n – Localization) to istotny krok na drodze do profesjonalnego rozwoju aplikacji. Konieczne jest wykorzystanie funkcji do lokalizacji dostępnych w WordPress, aby wszystkie teksty wyświetlone na stronie użytkownikowi były przekładane na odpowiednie języki.

Najpierw należy zastosować tę zasadę we wszystkich tekstach, które można przetłumaczyć.__()(wykorzystywane do powrotu wartości) lub_e()(Funkcja jest używana do bezpośredniego wyświetlania wyników, a także do ustawienia pola tekstowego.)functions.phpWload_theme_textdomain()Funkcja załadowuje plik z tłumaczeniami.

// 在 functions.php 中
function mytheme_load_textdomain() {
    load_theme_textdomain( 'my-first-theme', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'mytheme_load_textdomain' );

// 在模板文件中使用
_e( '阅读更多', 'my-first-theme' );
$heading = __( '最新文章', 'my-first-theme' );

Następnie możesz użyć narzędzi takich jak Poedit, aby skanować teksty zawarte w plikach tematycznych i wygenerować niezbędne dane..potTworzymy pliki i przygotowujemy je w różnych językach..po.moPlik umieszczony w temacie./languages/W katalogu.