Przewodnik po rozwoju pluginów dla WordPress: jak stworzyć swój pierwszy, dostosowany plugin od zera

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

Przygotowanie środowiska do rozwoju wtyczek dla WordPress

Przed rozpoczęciem pisania kodu potrzebny jest odpowiedni środowisko rozwoju. To nie tylko poprawi twoją efektywność pracy, ale także ułatwi debugowanie i testowanie pluginów. Najpierw musisz uruchomić środowisko WordPress na swoim komputerze. Możesz skorzystać z zintegrowanych środowisk rozwoju, takich jak XAMPP, MAMP lub Local by Flywheel, które umożliwiają szybkie instalowanie PHP, MySQL oraz serwerów Apache/Nginx. Jeśli chodzi o pliki core WordPress, zaleca się pobrать i zainstalować najnowszą, stabilną wersję z oficjalnej strony internetowej.

Upewnij się, że twoja wersja PHP spełnia minimalne wymagania WordPressa, a także włącz funkcję raportowania błędów – to jest kluczowe dla debugowania problemów. Możesz to zrobić w następujący sposób:wp-config.phpAby uruchomić tryb debugowania, należy dodać następujący kod do pliku:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // 将错误记录到 /wp-content/debug.log
define('WP_DEBUG_DISPLAY', false); // 不在页面上显示错误

Ponadto niezbędny jest mocny editor kodu, np. Visual Studio Code,PhpStorm lub Sublime Text. Te editory często oferują wyróżnianie gramatycznego kodu, sugestie dotyczące jego pisania oraz integrację z systemem kontroli wersji, co znacząco poprawia doświadczenie programowania. Zaleca się również instalowanie narzędzi developerskich w przeglądarcu oraz rozważanie użycia rozszerzeń specjalnie przygotowanych dla WordPress, aby ułatwić sprawdzanie funkcji hooków, wykonywanie zapytań do bazy danych oraz monitorowanie wydajności witryny.

Polecamy lekturę. Przewodnik po rozwoju pluginów dla WordPress: stworzenie twojego pierwszego modułu funkcjonalnego od zera

Stworz swoj pierwszy plik z rozszerzeniem (plugin).

Najprostszym formatem pluginu do WordPress jest plik w języku PHP. Wszystkie pluginy są przechowywane w określonym miejscu w strukturze plików witryny./wp-content/plugins/W katalogu znajdują się pliki z rozszerzeniami. Każde rozszerzenie może być osobnym plikiem w formacie PHP lub folderem zawierającym kilka 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.

Najpierw stwórz folder o unikalnym nazwaniu dla swojego pluginu, na przykład:my-first-pluginW tym folderze utwórz plik głównego pluginu, który zwykle nosi nazwę identyczną z nazwą foldera.my-first-plugin.phpNa początku tego pliku musi znajdować się komentarz z informacjami o pluginie, zgodny z standardami WordPress. Ten komentarz zawiera podstawowe dane o pluginie, które są przekazane systemowi WordPress.

Przykład komentarza na początku pliku z głównym pluginem:

<?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
 */

W tym komentarzu pola “Plugin Name” jest obowiązkowe – to właśnie określa nazwę, pod którą plugin będzie wyświetlany w interfejsie administracyjnym. Dodatkowe informacje, takie jak wersja pluginu czy autor, pomagają użytkownikom lepiej go zrozumieć. Po stworzeniu tego pliku należy umieścić go w odpowiednim miejscu./wp-content/plugins/my-first-plugin/Katalog. Teraz loguj się do panelu administracyjnego WordPress, wejdź na stronę “Dodatki” (Plugins) i powinien pojawić się nowy dodatek o nazwie “Moje pierwsze dostosowane dodatko” (My First Customized Plugin), który możesz aktywować. Choć na razie nie robi nic specjalnego, to udało ci się stworzyć podstawową strukturę dodatku.

Procedury aktywacji i dezaktywacji wtyczek

Podczas aktywacji i dezaktywacji pluginów często konieczne jest wykonywanie procedur inicjalizacyjnych i czyszczeniowych, np. tworzenie tabel w bazie danych, ustawianie standardowych opcji lub usunięcie tymczasowych danych. WordPress zarządza tymi procesami za pomocą dwóch specjalnych „hooków” (hooków).register_activation_hookregister_deactivation_hook

Polecamy lekturę. Od podstaw do poziomu zaawansowanego: kompletny przewodnik po tworzeniu wtyczek do WordPressa wraz z najlepszymi praktykami.

Możesz definiować te „haki” (hooki) w głównym pliku pluginu. Na przykład, gdy plugin jest aktywny, chcemy może zapisać dane konfiguracji do bazy danych; gdy plugin jest wyłączony, konieczne może być usunięcie tych danych. Kod realizujący to jest następny:

// 定义插件激活时执行的函数
function my_plugin_activate() {
    // 添加一个默认选项到数据库
    add_option('my_plugin_default_option', '这是默认值');
    // 或者可以在这里初始化自定义数据库表(需要更复杂的SQL)
}
register_activation_hook(__FILE__, 'my_plugin_activate');

// 定义插件停用时执行的函数
function my_plugin_deactivate() {
    // 删除之前创建的选项
    delete_option('my_plugin_default_option');
    // 注意:通常不在停用钩子中删除数据,以免用户重新激活时丢失设置
    // 更常见的清理工作在卸载钩子中处理
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate');

Warto zaznaczyć, że…register_deactivation_hookZwykle używa się to do łagodnego czyszczenia, natomiast permanentne usunięcie danych (np. tabel w bazie danych) powinno być realizowane w ramach procedur odłączenia aplikacji („uninstallation hooks”). Funkcja odłączenia aplikacji musi zostać dostosowana tak, aby to umożliwiła.register_uninstall_hookZarejestruj się. Racjonalne używanie tych „haków” (hooków) zapewni, że twoja wtyczka będzie zachowywać się zgodnie z zasadami i nie będzie pozostawiać zbędnych danych na stronie internetowej.

Zrozumienie i stosowanie hooków oraz filtrów

Podstawa rozwoju pluginów dla WordPressa stanowi mechanizm zwany “hookami” (Hooks), który umożliwia wstawianie własnego kodu w określone momenty lub w określonych miejscach, aby modyfikować lub rozszerzać funkcje standardowego systemu WordPress. Hooki dzielą się głównie na dwa typy: akcje (Actions) i filtry (Filters).

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%

Aktywnie działające „haki” (ang. action hooks) umożliwiają wykonywanie własnych funkcji w momencie wystąpienia określonych zdarzeń. Na przykład, po opublikowaniu artykułu…publish_postW czasie ładowania w nagłówku strony internetowej…wp_head) albo podczas inicjalizacji w panelu administracyjnym (admin_initMożesz użyć tego.add_action()Funkcja służy do montowania twojego kodu. Poniżej znajduje się prosty przykład, który automatycznie dodaje określony tekst na końcu każdego artykułu:

function add_custom_footer_to_content($content) {
    if (is_single()) { // 仅在单篇文章页面添加
        $custom_text = '<p><em>Dziękuję za przeczytanie tego artykułu!</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
// 使用‘the_content’过滤器,注意这是一个过滤器(Filter)的例子
add_filter('the_content', 'add_custom_footer_to_content');

Jak pokazano w powyżej kodzie, faktycznie używamy filtrów. Hooki filtrów służą do modyfikacji danych przekazanych im. Różnica kluczowa między filtrem a akcją polega na tym, że filtr musi zwrócić zmodyfikowane wartości. Typowe przykłady filtrów to…the_content(Zmiana treści artykułu)the_title(Zmieniony nagłówek) Iexcerpt_length(Zmiana długości opisu). W związku z tym…add_filter()Funkcja służy do montowania filtrów.

Tworzenie własnych „hooków” (zdarzeń obsługujejących określone procedury w aplikacji), aby inne osoby mogły je rozszerzać.

Dobrze zaprojektowany plugin nie tylko wykorzystuje standardowe „hooki” dostępne w WordPress, ale także oferuje własne, dostosowane rozszerzenia, aby inni programiści mogli rozwijać funkcjonalność tego pluginu.do_action()Funkcja może tworzyć „hooki” do obsługi określonych działań (akcji), które są wykonywane w odpowiednim momencie.apply_filters()Można stworzyć hooka filtru.

Polecamy lekturę. Pełny przewodnik po rozwoju pluginów dla WordPress: jak stworzyć swoj własny plugin od zera

Na przykład, przed tym jak twoje wtyczka przetworzy dane, udostępnij filtr, który pozwoli innym osobom zmienić wejściowe parametry.

// 定义插件的主要处理函数
function my_plugin_process_data($input_data) {
    // 在核心处理前,允许其他开发者通过过滤器修改 $input_data
    $filtered_data = apply_filters('my_plugin_filter_input', $input_data);

// ... 使用 $filtered_data 进行核心处理 ...

// 在处理完成后,触发一个动作钩子,通知其他开发者
    do_action('my_plugin_after_processing', $filtered_data);

return $result;
}

Dzięki tworzeniu własnych „hooków” twoje wtyczka (plugin) posiada dobrą rozszerzalność i jest w zgodzie z filozofią rozwoju WordPress.

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.

Dodać stronę zarządzania i opcje konfiguracji dla pluginu.

Większość przydatnych wtyczek wymaga interfejsu administracyjnego, aby administratorzy stron internetowych mogli konfigurować ich opcje. WordPress oferuje bogatą API, umożliwiającą tworzenie menu administracyjnych oraz stron ustawień.

Najpierw musisz użyć…add_action('admin_menu', 'your_function')Użyj „hooków” do rejestracji elementów menu. W odpowiedniej funkcji zrealizuj to wymaganie.add_menu_page()add_submenu_page()Funkcje służą do dodawania menu głównego lub podmeni. Poniżej znajduje się przykład kodu, który pokazuje, jak dodać menu główne oraz ustawić jego właściwości na stronie:

// 钩入 admin_menu 来添加管理菜单
function my_plugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',               // 菜单标题
        'manage_options',         // 权限(管理员)
        'my-plugin-settings',     // 菜单slug
        'my_plugin_settings_page', // 用于显示页面内容的回调函数
        'dashicons-admin-generic', // 图标(Dashicon)
        80                         // 菜单位置
    );
}
add_action('admin_menu', 'my_plugin_add_admin_menu');

// 定义设置页面的显示内容
function my_plugin_settings_page() {
    // 检查用户权限
    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
            // 输出设置字段和非ce字段
            settings_fields('my_plugin_options_group');
            do_settings_sections('my-plugin-settings');
            submit_button('保存设置');
            ?>
        <input type="hidden" name="trp-form-language" value="pl"/></form>
    </div>
    &lt;?php
}

Pola konfiguracji rejestracji i weryfikacji

Nie wystarczy tylko strony internetowej – potrzebujesz wykorzystać API ustaw WordPress, aby bezpiecznie zarejestrować, przechować i sprawdzić opcje ustawień. Ten proces obejmuje kilka kroków:register_setting()add_settings_section()add_settings_field()Funkcje takie jak…

Następny kod pokazuje, jak zarejestrować grupę opcji ustawień oraz pole tekstowe:

// 初始化插件设置
function my_plugin_settings_init() {
    // 注册一个设置选项组及其数据
    register_setting(
        'my_plugin_options_group', // 选项组名,需与settings_fields()参数一致
        'my_plugin_settings',      // 存储在wp_options表中的选项名
        'my_plugin_sanitize_input' // 可选的验证回调函数
    );

// 添加一个设置区域
    add_settings_section(
        'my_plugin_section_main',
        '主要设置',
        null, // 区域描述的回调函数,可为空
        'my-plugin-settings' // 所属页面的slug
    );

// 向该区域添加一个具体的字段
    add_settings_field(
        'my_plugin_field_text',
        '示例文本字段',
        'my_plugin_field_text_render', // 渲染字段HTML的回调函数
        'my-plugin-settings',
        'my_plugin_section_main'
    );
}
add_action('admin_init', 'my_plugin_settings_init');

// 渲染文本输入字段的函数
function my_plugin_field_text_render() {
    $options = get_option('my_plugin_settings');
    $value = $options['text_field'] ?? ''; // PHP 7.0+ 空合并运算符
    ?>
    <input type='text' name='my_plugin_settings[text_field]' value='<?php echo esc_attr($value); ?>'>
    <?php
}

// 清理和验证输入的函数
function my_plugin_sanitize_input($input) {
    $sanitized_input = [];
    if (isset($input['text_field'])) {
        // 清理文本输入,移除非法标签
        $sanitized_input['text_field'] = sanitize_text_field($input['text_field']);
    }
    return $sanitized_input;
}

Za pomocą API ustaw (Settings API) WordPress automatycznie zajmuje się zapisywaniem opcji, sprawdzaniem ich bezpieczeństwa oraz kontrolą upoważnień, co znacząco upraszcza proces rozwoju i poprawia bezpieczeństwo aplikacji.

Podsumowanie.

Przez ten przewodnik systematycznie prześcigliśmy wszystkie kluczowe kroki rozwoju pluginów dla WordPress: od przygotowania środowiska, tworzenia podstawowych plików pluginu, po zrozumienie i wykorzystanie mechanizmu hooków, a na koniec dodanie profesjonalnego interfejsu zarządzania oraz opcji konfiguracji. Każdy etap obejmował przykłady kluczowego kodu oraz standardowe metody pracy. Istotą rozwoju pluginów jest skuteczne wykorzystanie rozwiniętego systemu hooków WordPress do rozszerzania funkcji, a także stosowanie zgodnych z jego specyfikacją API standardów, aby zapewnić bezpieczeństwo i kompatybilność. Pamiętaj, że skuteczny sposób na stworzenie dobrego pluginu polega na rozpoczęciu od prostego pomysłu, stopniowym dodawaniu kolejnych funkcji oraz dokładnym testowaniu na każdym etapie rozwoju. Dalej możesz zapoznać się z bardziej zaawansowanymi tematami, takimi jak tworzenie własnych typów artykułów, dodawanie shortcode’ów, obsługa żądań AJAX oraz internationalizacja pluginu.

FAQ – najczęściej zadawane pytania.

Czy do tworzenia wtyczek WordPressowych konieczna jest biegła znajomość PHP?

Tak, solidne znajomości PHP są konieczne. A to dlatego, że serce WordPressa, a także jego dodatki, są napisane w języku PHP. Musisz znać gramatykę PHP, funkcje, zasady programowania obiektowego itp. Ponadto znajomość HTML, CSS i JavaScriptu będzie przydatna przy tworzeniu interfejsów użytkownika i realizacji interakcji.

Ile plików musi zawierać dodatek (plugin)?

Nie istnieje żadne obowiązujące wymogienie. Dodatek może zawierać tylko jeden główny plik PHP. Jednak wraz z rosnącą złożonością funkcji warto modularizować kod, rozdzielając go na kilka plików.admin.phpPracuje w tle (w obszarze obsługi systemu).public.phpZajmowanie się frontendem.includesZawieranie publicznych funkcji w folderach to lepsza praktyka, która pomaga w organizacji i utrzymaniu kodu.

Dlaczego po aktywacji mojego pluginu witryna internetowa wyświetla tylko biały ekran?

Zwykle to wynika z błędu śmiertelnego (Fatal Error), np. błędu gramatycznego lub wywołania nieistniejącej funkcji lub klasy. Upewnij się, że wszystko jest w porządku.wp-config.phpZostało to uruchomione w Chinach.WP_DEBUGMode, i sprawdź.wp-content/debug.logInformacja o błędzie w pliku. Można szybko przywrócić dostęp do witryny, wyłączając swoje wtyczki za pomocą protokołu FTP lub menadżera plików (przepisując folder z wtyczkami).

Jak bezpiecznie obsługiwać dane wysłane przez użytkowników na stronie frontend?

Nigdy nie można ufać danym wprowadzonym przez użytkownika. Przed obróbką wszystkich danych pochodzących z formularzy, parametrów URL lub plików cookie konieczne jest ich sprawdzenie, oczyszczenie oraz uwzględnienie specjalnych zasad formatowania („escape”). WordPress oferuje wiele funkcji bezpieczeństwa, które pomagają w zabezpieczeniu aplikacji przed atakami.sanitize_text_field()(Cleaning the text)esc_url()(Urloki z escape)wp_kses_post()(Filtruj zawartość według dozwolonych tagów HTML) iintval()(Aprawdź to na całych liczbach). Gdy wyświetlasz dane na stronie HTML, koniecznie użyj całości liczby.esc_html()esc_attr()Funkcje takie jak escape są używane do przekształcenia specjalnych znaków w zwykłe znaki, aby można było bez problemów przetwarzać dane.

Jak zrobić, aby tekst w moim pluginie był dostępny w kilku językach?

To wymaga implementacji funkcji internacionalizacji (i18n). W twoim kodzie wszystkie teksty, które potrzebują tłumaczenia, należy zastąpić specjalnymi elementami, które umożliwiają tłumaczenie.__()_e()Zawijanie funkcji. Następnie poprawnie ustawić to w komentarzach na początku pliku z pluginem.Text DomainDomain PathUżyj narzędzia takiego jak Poedit do tworzenia..potPliki szablonów, a także ich wersje w różnych językach..po.moWordPress automatycznie pobiera tłumaczenia według ustawie językowej witryny.