Pierwsze kroki w tworzeniu wtyczek WordPress: Tworzenie pierwszego wyróżnionego rozszerzenia od podstaw

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

Pierwsze kroki w tworzeniu wtyczek WordPress: Tworzenie pierwszego wyróżnionego rozszerzenia od podstaw

Podstawa struktury i organizacji plików w pluginach WordPress

Standardowy plugin WordPress składa się zwykle z jednego głównego pliku. Nazwa tego pliku jest bardzo istotna – zazwyczaj odpowiada nazwie katalogu, w którym znajduje się plugin. Na przykład plugin o nazwie “my-awesome-plugin” może mieć główny plik o nazwie „my-awesome-plugin.php”.my-awesome-plugin.phpW tym pliku komentarze umieszczone na początku modułu są niezbędne, ponieważ służą do podania podstawowych informacji o modułu systemowi WordPress.

/**
 * Plugin Name:      我的第一个插件
 * Plugin URI:       
 * Description:      这是一个用于演示的WordPress插件。
 * Version:          1.0.0
 * Author:           你的名字
 * License:          GPL v2 or later
 * Text Domain:      my-first-plugin
 */

Katalog pluginów powinien mieć unikalną nazwę, aby uniknąć konfliktów z istniejącymi pluginami, a sam katalog powinien zostać umieszczony w odpowiednim miejscu./wp-content/plugins/W katalogu znajduje się główny plik PHP, a ponadto folder assets, w którym są umieszczone pliki JavaScript i CSS, folder languages zawierający materiały przeznaczone do lokalizacji, oraz folder templates zawierający szablony. Jasna struktura organizacji plików jest istotna dla łatwej obsługi i zarządzania projektem.includes/Wykorzystywane w klasych i funkcjach kluczowych.admin/Wykorzystywane do logiki na stronie serwerowej (backend).public/Znajduje zastosowanie w logice front-end i znacząco poprawia łatwość konserwacji pluginów.

Polecamy lekturę. Światowy przewodnik po tworzeniu pluginów dla WordPressa: jak stworzyć pierwszy własny plugin od zera

Rozwiązanie kluczowych funkcji wtyczki

Silna strona pluginów WordPress polega na ich elastycznych systemach hooków i filtrów. Hooki akcji (Action Hooks) umożliwiają wykonywanie własnego kodu w określonych momencach – na przykład po opublikowaniu artykułu lub podczas ładowania menu administracyjnego. Z kolei hooki filtrów (Filter Hooks) pozwalają modyfikować dane przekazywane w ramach procesu obsługi treści.

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.

Częsty scenariusz to automatyczne dodawanie tekstu na końcu treści artykułu. To można zrealizować za pomocą różnych technik, np. zaawansowanych programów do edycji tekstu lub skryptów.the_contentMożna to zrealizować za pomocą filtrów. W głównym pliku pluginu możesz definiować funkcję i użyć jej do realizacji wymaganych działań.add_filterFunkcja jest montowana na filtrze.

function myplugin_add_footer_text( $content ) {
    if ( is_single() ) {
        $custom_text = '<p><em>Informacje umieszczone na końcu tego tekstu zostały automatycznie wygenerowane przez moje dodatkowe oprogramowanie (plugin).</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_footer_text' );

Kolejna istotna funkcja to możliwość tworzenia stron zarządzania. WordPress oferuje bogatą gamę funkcji, które umożliwiają dodawanie elementów menu i stron w tle systemu. Możesz je wykorzystać do tworzenia potrzebnych elementów interfejsu użytkownika.add_menu_page()add_submenu_page()Można użyć funkcji do definiowania strony internetowej. Ten proces zwykle składa się z dwóch kroków: najpierw należy zarejestrować elementy menu, a potem definiować funkcję zwrotną (callback) dla tej strony menu, która będzie wyświetlać treść w formie HTML.

function myplugin_add_admin_page() {
    add_menu_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 权限
        'myplugin-settings', // 菜单别名
        'myplugin_admin_page_html', // 回调函数
        'dashicons-admin-generic', // 图标
        20 // 位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_page' );

function myplugin_admin_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( 'myplugin_options' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="pl"/></form>
    </div>
    &lt;?php
}

Ustawianie dodatków (plug-inów) i obsługa opcji

Aby plugin był łatwy w konfiguracji, standardowym rozwiązaniem jest stworzenie strony z ustawieniami. WordPress oferuje systematyzowaną API do zarządzania ustawieniami, która umożliwia bezpieczne ich rejestrację, zapisywanie i sprawdzanie.

Najpierw musisz użyć…register_setting()Funkcja służy do rejestracji zestawu ustawień. Następnie są te ustawienia używane…add_settings_section()Dodaj blok ustawień i użyj go.add_settings_field()W tym bloku należy dodać konkretnych polów do ustawień. Te czynności są zwykle wykonywane…admin_initZakończone w ramach tego „haka”.

Polecamy lekturę. Analiza tworzenia wtyczek WordPress: kompletny przewodnik po budowaniu niestandardowych modułów funkcjonalnych od podstaw.

function myplugin_settings_init() {
    // 注册一个新设置
    register_setting( 'myplugin_options', 'myplugin_settings', 'myplugin_sanitize' );

    // 添加一个设置区块
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_cb',
        'myplugin-settings'
    );

    // 添加一个文本字段
    add_settings_field(
        'myplugin_field_footer_text',
        '自定义尾部文本',
        'myplugin_field_footer_text_cb',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_footer_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

// 字段渲染回调函数
function myplugin_field_footer_text_cb() {
    $options = get_option( 'myplugin_settings' );
    ?>
    <input type="text" id="myplugin_field_footer_text" name="myplugin_settings[footer_text]" value="<?php echo esc_attr( $options['footer_text'] ?? '' ); ?>" class="regular-text">
    <?php
}

// 数据清理回调函数
function myplugin_sanitize( $input ) {
    $sanitized = [];
    if ( isset( $input['footer_text'] ) ) {
        $sanitized['footer_text'] = sanitize_text_field( $input['footer_text'] );
    }
    return $sanitized;
}

Na froncie (tj. na stronie klienta) można to zrobić za pomocą różnych narzędzi i technik. Konkretnie:get_option('myplugin_settings')Udostępniono zestaw zapisanych opcji; użyj tych wartości w swojej logice funkcjonalnej.

Bezpieczeństwo wtyczek oraz najlepsze praktyki ich stosowania

Tworzenie pluginu do publicznego rozdawania lub używania w środowisku produkcyjnym wymaga, aby bezpieczeństwo było najważniejszym kryterium. Wszelkie dane pochodzące od użytkowników lub z niezaufanych źródeł muszą zostać sprawdzone, oczyszczone i poddane procesowi escape.

Weryfikacja (ang. Validation) oznacza sprawdzenie, czy dane spełniają oczekiwany format przed ich obróbką, na przykład za pomocą odpowiednich narzędzi lub procedur.filter_var()Weryfikacja adresu e-mail. Sanitizacja to proces usuwania nielegalnych lub niebezpiecznych znaków z danych. WordPress oferuje narzędzia do tego celu, np.…sanitize_text_field()sanitize_email()wp_kses_post()Wiele funkcji służy do czyszczenia danych. Proces wykonywania escape (uwolnienia znaków specjalnych) polega na bezpiecznym kodowaniu informacji podczas wyświetlania w HTML, JavaScript lub URL-ach, aby zapobiec atakom typu XSS. Do tego celu należy używać odpowiednich metod.esc_html()esc_attr()esc_url()wp_json_encode()Funkcje takie jak…

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%

Gdy obsługuje się żądania nie typu CE (AJAX) w ramach wtyczki, konieczne jest sprawdzenie wszystkich elementów.nonce(Cyfra użyta tylko jeden raz) Do weryfikacji legalności żądania oraz sprawdzenia upoważnień aktualnego użytkownika (możliwości).

// PHP端:生成nonce并输出到页面
wp_nonce_field( 'myplugin_ajax_action', 'myplugin_nonce' );

// JavaScript端:随AJAX请求发送nonce
jQuery.ajax({
    url: ajaxurl,
    type: 'POST',
    data: {
        action: 'myplugin_ajax_handler',
        nonce: jQuery('#myplugin_nonce').val(),
        // ... 其他数据
    }
});

// PHP端:处理AJAX请求时验证
function myplugin_ajax_handler() {
    check_ajax_referer( 'myplugin_ajax_action', 'nonce' );
    if ( ! current_user_can( 'edit_posts' ) ) {
        wp_die( '权限不足' );
    }
    // ... 处理安全请求
}
add_action( 'wp_ajax_myplugin_ajax_handler', 'myplugin_ajax_handler' );

Ponadto, stosuje się standardy kodowania WordPress oraz jest zapewniona pełna obsługa internacionalizacji (z użyciem…).__()_e()Funkcja, i użyj jej…load_plugin_textdomain()Wymaga to wczytywania plików z tłumaczeń, a także wykonywania niezbędnych działań przy dezaktywacji dodatków (np. usunięcia niepotrzebnych zasobów).register_uninstall_hook()Wymazanie elementów z bazy danych oraz stosowanie innych najlepszych praktyk jest niezbędne przy rozwijaniu profesjonalnych pluginów.

Podsumowanie.

Rozwoj pluginów dla WordPress polega na bezproblemowym integrowaniu własnych funkcji do ogromnej ekosystemu tego systemu zarządzania treścią (CMS). Proces rozpoczyna się od dobrze zorganizowanego katalogu pluginów oraz pliku głównego zawierającego stosowne komentarze. Kluczowym elementem jest umiejętne wykorzystanie „hooków” do akcji i filtrów, aby rozszerzyć standardowe zachowanie WordPressa, a także dostarczenie użytkownikom przyjaznego interfejsu konfiguracji poprzez strony zarządzania i API. Podczas całego procesu bezwzględną wagę ma bezpieczeństwo – należy dbać o weryfikację danych, ich czyszczenie, escapeowanie oraz sprawdzenie upoważnień użytkowników. Dodawanie najlepszych praktyk, takich jak internacionalizacja i standardy kodowania, gwarantuje, że twój plugin będzie stabilny, bezpieczny i łatwy w obsłudze, co umożliwi mu sprawną pracę na milionach stron internetowych.

Polecamy lekturę. Od podstaw: kompletny przewodnik po tworzeniu wtyczek do WordPressa wraz z praktycznymi poradami.

FAQ – najczęściej zadawane pytania.

Jaki przygotowujący się potrzebny jest, aby tworzyć dodatki (plugi) do WordPress?

Konieczne jest posiadanie solidnych umiejętności programowania w PHP; zrozumienie zasad programowania obiektowego (OOP) będzie bardzo przydatne. Ponadto należy mieć podstawową znajomość HTML, CSS i JavaScript, aby móc pracować z interfejsem użytkownika i jego interakcją. Najważniejsze jest zapoznanie się z kluczowymi elementami WordPressa, takimi jak „hooki” (Hooks), API do konfiguracji (Options API), role i uprawnienia użytkowników, a także z strukturą bazy danych.

Jak debugować wdrożony w WordPress plugin w trakcie jego rozwoju?

Najpierw upewnij się, że nawp-config.phpW pliku jest włączone (aktywne) określone funkcje lub opcje.WP_DEBUGWP_DEBUG_LOGTo umożliwi zapisanie informacji o błędzie./wp-content/debug.logTen tekst znajduje się w pliku i nie jest wyświetlany użytkownikowi na stronie internetowej (tj. nie jest dostępny w interfejsie użytkownika).

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.

Za pomocą narzędzi takich jak plugin Query Monitor można w czasie rzeczywistym monitorować wykonywane zapytania do bazy danych, działanie hooków, błędy w PHP oraz dane dotyczące wydajności systemu. Do celów debugowania logiki można te narzędzia połączyć z innymi metodami diagnostyki.error_log()Można używać funkcji oraz profesjonalnych narzędzi do debugowania PHP, takich jak Xdebug, do realizacji kroku po kroku śledzenia wykonywania kodu.

Jak powinienem dodać do swojego pluginu tabelę w bazie danych dostosowaną do moich potrzeb?

Dodawanie tabeli kustomowej rozpatrujemy wyłącznie wtedy, gdy struktura bazy danych wewnętrznej WordPress nie spełnia wymagań. Możesz stworzyć tę tabelę w momencie aktywacji wtyczki, zwykle poprzez zarejestrowanie funkcji, która zostanie wykonana w tym momencie.

W tej funkcji używa się…dbDelta()Funkcja służy do bezpiecznego tworzenia lub aktualizowania struktury tabeli. Do działania tej funkcji jest konieczna pełna informacja o strukturze tabeli.CREATE TABLE SQL-zapyt, a także podejście do zmian w strukturze tabeli są bardzo ostrożne. SQL-zapyt, który potrzebujesz, można uzyskać za pomocą globalnej zmiennej.$wpdbWykonaj to.

Jak zrobić, aby mój plugin obsługiwał kilka języków (internacjonalizacja)?

Najpierw należy to zdefiniować w komentarzu na początku głównego pliku pluginu.Text DomainI użyć tego podczas ładowania wtyczki.load_plugin_textdomain()Funkcja załadowuje pliki z tłumaczeń. W wszystkich elementach pliku, które wymagają tłumaczenia w pluginie, używane są teksty w języku źródłowym.__()„Albo…”_e()Funkcje należy „zawinąć” w odpowiednie struktury (np. klasy, moduły itd.). Po tym można użyć narzędzi takich jak Poedit do generowania kodu..potPliki szablonów, które umożliwiają tłumaczom tworzenie tekstów w określonym języku..po.moDokumenty.