Kompletny przewodnik po tworzeniu wtyczek do WordPressa: praktyczny poradnik od podstaw do zaawansowanych technik.

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

Ustawienie środowiska do rozwoju pluginów dla WordPress

Przed rozpoczęciem pisania swojego pierwszego pluginu istotne jest posiadanie stabilnego, izolowanego i pełnowartościowego środowiska rozwoju. To nie tylko zapewni bezpieczeństwo twojego witryny w produkcji, ale także udostępni wszystkie niezbędne narzędzia do debugowania i testowania.

Konfiguracja środowiska rozwoju lokalnego

Najzaleczonej metodą jest używanie lokalnego środowiska serwerowego, np. Local by Flywheel, XAMPP lub MAMP. Te narzędzia umożliwiają jednorazową instalację WordPressa w połączeniu z PHP, MySQL i serwerem web. Upewnij się, że twoja wersja PHP jest zgodna z aktualnie rekomendowaną wersją przez WordPress, a także włącz funkcję raportowania błędów – to pomoże w wykrywaniu potencjalnych problemów na wczesnym etapie rozwoju.

W katalogu instalacji WordPressu. wp-content/plugins W folderze utwórz osobny folder dla twojego nowego pluginu, na przykład: my-first-pluginWszystkie pliki z rozszerzeniami zostaną umieszczone w tym miejscu.

Polecamy lekturę. Pełny przegląd optymalizacji SEO: praktyczny przewodnik od technicznej architektury po strategię treści

Wybór edytora kodu i narzędzi do debugowania

Wybór silnego edytora kodu może znacząco poprawić efektywność rozwoju oprogramowania – na przykład Visual Studio Code, PHPStorm lub Sublime Text. Koniecznie zainstaluj do edytora rozszerzenia takie jak WordPress Code Snippets, PHP IntelliSense oraz PHP Debugging.

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.

Jeśli chodzi o debugowanie, oprócz włączenia funkcji dostępnych w WordPress… WP_DEBUG Wzór (w wp-config.php Ustawienia w pliku define('WP_DEBUG', true);Zaleca się również instalację dodatku Query Monitor. To panel dla programistów, który w czasie rzeczywistym wyświetla informacje o zapytaniach do bazy danych, błędach w PHP, hookach oraz skryptach – stanowi doskonały narzędzie przy tworzeniu dodatków.

Stworzenie twojego pierwszego plugina dla WordPress

Standardowy plugin dla WordPress musi mieć co najmniej jedno główne plikowanie. To plikowanie musi zawierać określone informacje o pluginie, aby WordPress mógł go rozpoznać i załadować.

Napisanie głównego pliku pluginu

W folderze z twoimi pluginami (na przykład…) my-first-pluginW tym celu należy stworzyć plik w języku PHP, zwykle nazwany według nazwy dodatku (pluginu). my-first-plugin.phpNa początku pliku musi znajdować się komentarz z informacjami o włączonym pluginie.

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习WordPress插件开发的示例插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Ten komentarz stanowi “dowód tożsamości” pluginu. W nim znajdują się informacje o jego funkcjach, zasadach działania oraz szczegółach implementacji.Plugin Name To pola obowiązkowe; wszystkie inne są opcjonalne. WordPress wykorzystuje te informacje do wyświetlania twoich pluginów w liście dostępnych w panelu administracyjnym.

Polecamy lekturę. Kompletny przewodnik po tworzeniu wtyczek WordPress: od podstaw do zaawansowanych technik.

Rozwinąć jedną podstawową funkcję.

Dajmy temu pluginowi dodatkową, prostą funkcję: automatyczne dodawanie ustalonego tekstu na końcu treści artykułu. Będziemy to robić za pomocą… the_content Filtry.

Poniżej informacji umieszczonej w nagłówku pliku rozszerzenia (plugin header) dodaj następujący kod:

// 在文章内容末尾添加自定义文本
function myfp_add_footer_text($content) {
    // 仅对单篇文章生效
    if (is_single()) {
        $custom_text = '<p><em>Dziękujemy za czytanie! Ten tekst został przygotowany z udziałem projektu “Moje pierwsze dodatki” („My First Plugins”).</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
add_filter('the_content', 'myfp_add_footer_text');

Po zapisaniu pliku wejdź na stronę “Dodatki” w panelu administracyjnym WordPress i powinien pojawić się tekst “Moja pierwsza dodatka”. Aktywuj ją, a potem przejdź na jakąś stronę witryny – uvidzisz, że przygotowany tekst został dodany na końiec artykułu. Ten prosty przykład pokazuje, jak używać “filtrów” do modyfikacji wyświetlanych treści w WordPress.

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%

Głębokie zagadnienia dotyczące istoty pluginów: hooki i API

Podstawą potężnych funkcji wtyczek WordPress są jego system “hooków” oraz bogata API. Zrozumienie tych elementów jest kluczowe dla postępnego rozwoju aplikacji.

Rozumienie działań oraz hooków filtrów

Hakówki (hooks) dzielą się na dwa głównego typy: akcje (Actions) i filtry (Filters).
Aktywnie działające „hooki” (ang. action hooks) umożliwiają wstawianie własnego kodu w określonych punktach wykonywania WordPressa, np. przy publikacji artykułu lub podczas ładowania backendu. add_action() Funkcja służy do montowania. Wykonuje określone operacje, ale nie oczekuje żadnego wyniku (wartości do powrotu).
Filtry hooki umożliwiają modyfikację danych generowanych przez WordPress w trakcie procesu obsługi. add_filter() Funkcja służy do montowania. Musisz przyjąć jeden argument wejściowy, zmienić go i następnie zwrócić wynik.

Na przykład wysyłanie wiadomości e-mail w momencie logowania użytkownika to jest jedna z akcji (działań) realizowanych przez system.

Polecamy lekturę. Stworzenie niezależnej witryny e-commerce w WooCommerce: praktyczny przewodnik od zera do jednego.

function myfp_on_user_login($user_login, $user) {
    wp_mail($user->user_email, '欢迎回来!', '您刚刚成功登录了网站。');
}
add_action('wp_login', 'myfp_on_user_login', 10, 2);

Zmiana nagłówka artykułu stanowi rodzaj „filtra”.

function myfp_prepend_title($title) {
    return '精选:' . $title;
}
add_filter('the_title', 'myfp_prepend_title');

Detaljny opis popularnych interfejsów API

WordPress oferuje wiele bezpiecznych funkcji API, które zapobiegają bezpośredniemu interakcji z bazą danych.
* 选项 API:使用 add_option(), get_option(), update_option() Służy do przechowywania i pobierania danych konfiguracji pluginów. Te dane są zapisywane w… wp_options W tabeli.
* 设置 API:用于在后台“设置”或独立页面中创建标准化、安全且可验证的表单字段。它简化了设置页面的创建过程,并自动处理安全校验(Nonce)和数据存储。核心函数包括 register_setting(), add_settings_section()add_settings_field()
* 数据库 API:通过 $wpdb Obiekt globalny umożliwia wykonywanie operacji na bazie danych według własnych wymagań. Dostępne są funkcje takie jak… $wpdb->insert(), $wpdb->update(), $wpdb->get_results() Taki sposób rozwiązania już uwzględnia zabezpieczenie przed prefiksami w tabelach oraz atakami typu SQL injection.
* HTTP API:使用 wp_remote_get()wp_remote_post() Można użyć tej funkcji do wysyłania zdalnych żądań HTTP. Jest ona wygodniejsza w obsłudze niż standardowe funkcje PHP. file_get_contents() Bezpieczniejsze, lepiej współpracuje z różnymi systemami, a także obsługuje protokół SSL oraz serwery pośredniczące (proxy).

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.

Tworzenie backendu dla pluginów oraz interfejsu użytkownika

Dojrzały plugin zwykle wymaga strony konfiguracji, aby użytkownicy mogli dostosować jego zachowanie. WordPress oferuje kilka sposobów na dodanie takiej strony do menu administracyjnego.

Tworzenie menu zarządzania i jego podmeni

Użyj add_menu_page() Można dodać element menu najwyższego poziomu do lewej nawigacji w tle aplikacji za pomocą tej funkcji. add_submenu_page() Można dodać do niego podstrony. Te funkcje są często używane w… admin_menu Wywołane w zaczepie akcji.

Poniżej znajduje się przykład strony, na której można tworzyć najwyższy poziom menu (top-level menu) oraz jego ustawienia:

// 添加后台菜单
function myfp_add_admin_menu() {
    // 添加顶级菜单
    add_menu_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 权限要求
        'myfp-settings', // 菜单slug
        'myfp_settings_page_html', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标
        80 // 位置
    );
}
add_action('admin_menu', 'myfp_add_admin_menu');

// 设置页面HTML内容
function myfp_settings_page_html() {
    // 权限检查
    if (!current_user_can('manage_options')) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <form action="/pl/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、节和安全字段
            settings_fields('myfp_options'); // 与 register_setting() 的选项组名匹配
            do_settings_sections('myfp-settings'); // 与页面slug匹配
            submit_button('保存设置');
            ?>
        <input type="hidden" name="trp-form-language" value="pl"/></form>
    </div>
    &lt;?php
}

Utworzenie formularza za pomocą API konfiguracji

Aby powyżej opisany formularz faktycznie funkcjonował, musimy użyć API do konfiguracji i rejestracji pol. To zwykle odbywa się w ramach procesu implementacji aplikacji. admin_init Zakończone w ramach tego „haka”.

// 初始化设置
function myfp_settings_init() {
    // 注册一个设置选项
    register_setting('myfp_options', 'myfp_settings');

// 添加一个设置节
    add_settings_section(
        'myfp_section_basic',
        '基础设置',
        null, // 节描述回调函数,可为空
        'myfp-settings'
    );

// 为节添加一个文本字段
    add_settings_field(
        'myfp_field_footer_text',
        '页脚文本',
        'myfp_field_footer_text_html', // 渲染字段HTML的回调函数
        'myfp-settings',
        'myfp_section_basic',
        ['label_for' => 'myfp_field_footer_text']
    );
}
add_action('admin_init', 'myfp_settings_init');

// 字段HTML渲染函数
function myfp_field_footer_text_html() {
    $options = get_option('myfp_settings');
    $value = $options['footer_text'] ?? '默认文本';
    ?>
    <input type="text"
           id="myfp_field_footer_text"
           name="myfp_settings[footer_text]"
           value="<?php echo esc_attr($value); ?>"
           class="regular-text">
    <?php
}

Dzięki takiej kombinacji stworzyliśmy standardową stronę konfiguracji backendu z funkcjami walidacji i przechowywania danych. Po zapisaniu zmian przez użytkownika wartości zostaną przesłane dalej. get_option('myfp_settings') Dane zostały pobrane i wykorzystane w funkcjach dodatku (pluginu).

Podsumowanie.

Rozwoj pluginów dla WordPress polega na zrozumieniu ich podstawowej struktury (np. plików nagłówkowych, organizacji plików) oraz poznaniu kluczowych mechanizmów (hooków, API). Poprzez przygotowanie profesjonalnego środowiska lokalnego możesz bezpiecznie testować i debugować swoje rozwiązania. Stworzenie pierwszego pluginu pomoże ci zapoznać się z procesem jego rozpoznawania i ładowania przez WordPress. Głębokie zrozumienie hooków akcji i filtrów, a także API do zarządzania opcjami, ustawieniami i bazą danych stanowi podstawę dla tworzenia funkcjonalnych i bezpiecznych pluginów. Na koniec, za pomocą funkcji dostępnych w meniu administracyjnym WordPress oraz API do konfiguracji, możesz stworzyć interfejs administracyjny, który zapewni użytkownikom spójną i łatwą do konfiguracji obsługę. Dodróżując tych kroków i stosując najlepsze praktyki, będziesz w stanie od zera stworzyć pluginy, które spełniają różne wymagania.

FAQ – najczęściej zadawane pytania.

Jakie są podstawowe wymagania, by rozwijać dodatki (plugi) do WordPress?

Konieczne jest posiadanie podstawowych znanych z języka programowania PHP, ponieważ większość pluginów jest napisanych w tym języku. Podobnie istotne jest znać HTML, CSS i JavaScript – te elementy są kluczowe przy tworzeniu interfejsów użytkownika i realizacji interakcji na stronach internetowych. Wiedza o podstawowych konceptach baz danych MySQL (tworzenie, edytowanie, aktualizowanie i wyświetlanie danych) pomoże zrozumieć, w jaki sposób WordPress zarządza danymi. Na koniec niezbędne jest poznanie ogólnej architektury WordPress oraz najczęściej używanych tagów w szablonach.

Jak zapewnić, że plugin, który rozwijam, jest bezpieczny?

Aby zapewnić bezpieczeństwo pluginów, należy stosować kilka najlepszych praktyk. Najpierw należy sprawdzić, oczyścić i wyeliminować wszystkie dane wprowadzone przez użytkowników. Do tego celu można używać funkcji dostępnych w WordPress. esc_html(), esc_attr(), sanitize_text_field()wp_kses()Następnie, przy wykonywaniu jakichkolwiek operacji zmieniających dane (np. wysyłania formularzy) konieczne jest używanie Nonce (jednorazowego tokenu) do weryfikacji intencji i źródła żądania. Na koniec, przy bezpośrednim interakcji z bazą danych należy zawsze stosować odpowiednie zabezpieczenia. $wpdb Można używać metod dostępnych w klasach lub zaawansowanych API, aby uniknąć pisania kodu SQL wручную i tym samym zapobiec atakom typu iniekcji.

Czy plik główny pluginu może mieć dowolną nazwę?

Możliwe, ale należy zachować określone zasady. Nazwę głównego pliku PHP można ustawić dowolnie, ale zwykle zaleca się używać nazwy zgodnej z nazwą katalogu lub nazwą pluginu, składającej się wyłącznie z małych liter i rozdzielonych kreskami, na przykład: my-awesome-plugin.phpNajważniejsze jest to, aby plik zawierał poprawne komentarze dotyczące nagłówków wtyczek (plugin headers). Plugin Name: Itp.), ponieważ WordPress rozpoznaje plagiary na podstawie tych specyficznych komentarzy w treści plików, a nie na podstawie ich nazw.

Jak dodać wsparcie dla wielu języków do mojego pluginu?

Dodanie wsparcia dla wielu języków (internacjonalizacja i lokalizacja) w pluginie składa się z trzech głównych kroków. Pierwszy krok polega na tym, aby w kodzie pluginu wszystkie teksty, które potrzebują tłumaczenia, zostały oznaczone specjalnymi znakami. __()_e() Zawij funkcje w odpowiednie obiekty i ustaw obszar tekstowy (Text Domain). Kolejnym krokiem jest poprawne deklarowanie tych elementów w komentarzach na początku pliku z pluginem. Text DomainDomain PathKrokiem trzecim jest skorzystanie z narzędzia takiego jak Poedit do skanowania kodu wtyczki i generowania… .pot Pliki szablonów, a potem tłumaczyć je na każdy język i generować odpowiednie wersje tych plików. .po.mo Plik należy umieścić w wyznaczonym katalogu językowym. WordPress automatycznie załaduje odpowiednie tłumaczenia w zależności od ustawień językowych witryny.