Odkryj tajniki rozwoju dodatków (pluginów): stwórz swoje pierwsze rozszerzenie od zera

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

Odkryj tajniki rozwoju dodatków (pluginów): stwórz swoje pierwsze rozszerzenie od zera

Podstawowym atutem WordPress jest jego wyjątkowa rozszerzalność. Dzięki tworzeniu własnych wtyczek programiści mogą bez problemu dodawać do witryny wszystkie potrzebne funkcje, bez konieczności modyfikacji kodu źródłowego, co gwarantuje bezpieczeństwo i wygodę aktualizacji. Ten przewodnik pomoże ci poznać zasady, standardy architektury oraz najlepsze praktyki przy rozwijaniu wtyczek dla WordPress.

Podstawa rozwoju pluginów

Przed zaczęciem pisania kodu istotne jest zrozumienie podstawowych conceptów i standardowej struktury pluginów WordPress. Plugin w istocie składa się z jednego lub kilku plików w formacie PHP, które są umieszczone w określonym katalogu, a także zawierają specjalny plik z komentarzami (header comment).

Standardy dla głównych plików wtyczek

Każdy plugin musi mieć główną plikę w formacie PHP. Ta plikacja musi zawierać standardowe informacje o pluginie, aby WordPress mógł go rozpoznać i zarządzać nim. Te informacje są umieszczone w postaci specjalnego bloku komentarzy. Na przykład, plik o nazwie… my-first-plugin.php Plik może zawierać następujące elementy:

Polecamy lekturę. Przewodnik po rozwoju tematów dla WordPress: jak stworzyć swoją pierwszą tematę od zera

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

Te informacje będą wyświetlone bezpośrednio na stronie zarządzania “pluginami” w panelu administracyjnym WordPress.Text DomainDomain Path Znajduje zastosowanie w procesie internacionalizacji (i18n) i umożliwia pluginowi obsługę wielu językó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.

Katalog plików i organizacja plików w rozszerzeniu

Dobrze zorganizowany katalog pluginów ułatwia nie tylko rozwój i utrzymanie oprogramowania, ale także pomaga użytkownikom zrozumieć jego strukturę. Zaleca się stosować następujący sposób organizacji:

/my-first-plugin/
├── my-first-plugin.php      // 主文件
├── uninstall.php            // 卸载清理脚本
├── includes/                // 核心功能类与函数
│   ├── class-core.php
│   └── functions.php
├── admin/                   // 后台相关文件
│   ├── css/
│   ├── js/
│   └── class-admin.php
├── public/                  // 前台相关文件
│   ├── css/
│   ├── js/
│   └── class-public.php
├── assets/                  // 静态资源(图片等)
└── languages/               // 翻译文件(.po, .mo)

Taka struktura rozdzielona na części frontowe, back-endowe oraz zasoby wspólne dokładnie oddziela te elementy, co jest zgodne z najlepszymi praktykami rozwoju w WordPress.

Rozszerzanie funkcjonalności za pomocą haków (hooks) i filtrów

API dla wtyczek w WordPressu jest zbudowane na zasadzie “haków” (ang. hooks), które stanowią istotę jego architektury zorientowanej na wydarzenia (ang. event-driven). Istnieją dwa typy haków: akcje (actions) i filtry (filters). Zrozumienie i skuteczne wykorzystanie haków jest kluczowym elementem w rozwoju wtyczek.

Używanie aktywnych háków (action hooks)

Aktywnie działające „hooki” (ang. action hooks) umożliwiają dodawanie własnego kodu w określonych momencach wykonywania WordPressa – na przykład w momencie opublikowania artykułu lub przy inicjalizacji menu w panelu administracyjnym. Możesz je wykorzystać do realizacji różnych zadań, np. automatycznego wysyłania wiadomości, aktualizowania danych w bazie danych itd. add_action() Funkcja “przyczepia” twoją własną funkcję do tych „haków” (hooków).

Polecamy lekturę. Przewodnik po technikach tworzenia witryn internetowych: kompleksowa analiza całego procesu, od planowania do uruchomienia.

Poniżej jest prosty przykład dodania linii tekstu dostosowanego w nagłówku strony internetowej. Najpierw tworzymy funkcję w głównym pliku pluginu, a potem przypisujemy ją do odpowiedniej części strony. wp_footer Ten element jest przyłączony do „haka” (ang. hook).

Funkcja myplugin_add_footer_text() {
    echo '<p style="text-align:center;">Dziękujemy za korzystanie z tego dodatku!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' );

Gdy WordPress wykonuje… wp_footer Gdy mowa o lokalizacji (zwykle w kontekście tematu…) footer.php Gdy zostanie wywołana funkcja (w środowisku, w którym jest ona zdefiniowana), dodana przez nas funkcja zostanie wykonana.

Używanie filtrów hooków

Hooki filtrów służą do modyfikacji danych przekazywanych w procesie. Pozwalają na przesłuchiwanie, sprawdzanie i edycję zmiennej, zanim zostanie użyta przez WordPress lub inne wtyczki. add_filter() Funkcja służy do aplikowania filtrów.

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%

Na przykład, zmienimy standardowy format wyświetlania nagłówków artykułów, dodając przed każdy nagłótek określony prefiks. Funkcję tę przyłączymy do odpowiedniej struktury programu. the_title Ten filtr jest przyłączony do tego hacza.

function myplugin_prefix_post_title( $title, $id = null ) {
    // 确保只在主循环且在非管理后台时添加前缀
    if ( ! is_admin() && in_the_loop() ) {
        $title = '[推荐] ' . $title;
    }
    return $title;
}
add_filter( 'the_title', 'myplugin_prefix_post_title', 10, 2 );

Parametry znajdujące się tu. 10 To oznacza priorytet – im mniejszy numer, tym zadanie zostanie wykonane wcześniej.2 To oznacza, że nasza funkcja przyjmuje dwa parametry.$title$idFunkcja filtru musi zwrócić zmienioną wartość.

Stworzenie strony do zarządzania pluginami

Wiele wtyczek wymaga dostępnych w panelu administracyjnym WordPress opcji konfiguracji. To zwykle realizuje się poprzez dodanie nowych stron do menu zarządzania. WordPress oferuje bogatą gamę funkcji do tworzenia głównego menu, podmeni oraz stron z opcjami konfiguracji.

Polecamy lekturę. Pełny samouczek: Dostosowanie szablonu strony produktu w WooCommerce w celu zwiększenia współczynnika konwersji sprzedaży.

Dodaj menu zarządzania na najwyższym poziomie.

Możesz użyć add_menu_page() Funkcja tworzy osobne elementy menu w tle dla twojego dodatku. Do tej funkcji są konieczne kilka parametrów, aby określić nagłówek strony, nazwę menu, uprawnienia, unikalny identyfikator oraz funkcję obsługującą odpowiednie działania (zwane „callback function”).

Następny kod pokazuje, jak dodać prostą stronę z menu najwyższego poziomu i upewnić się, że będzie wyświetlana tylko w momencie dostępu administratora.

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.
function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',       // 权限能力(通常为管理员)
        'myplugin-settings',    // 菜单 Slug
        'myplugin_settings_page', // 显示页面内容的回调函数
        'dashicons-admin-generic', // 图标(使用 Dashicons)
        30                      // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 定义设置页面的内容
function myplugin_settings_page() {
    ?&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
}

Tutaj,myplugin_settings_page Funkcja jest odpowiedzialna za renderowanie zawartości HTML na stronie. W praktycznych projektach łączy się to z ustawieniami WordPress oraz wykorzystaniem API.register_setting, add_settings_section, add_settings_fieldMożna tworzyć formularze, które można zapisywać, za pomocą odpowiednich narzędzi lub technologii.

Tworzenie formularzy i zapisywanie ustawień

Aby bezpiecznie i standardowo obsługiwać dane wprowadzane przez użytkowników, konieczne jest wykorzystanie API dostępnego w WordPress. API jest odpowiedzialne za kontrolę dostępu (np. za pomocą mechanizmu CES), weryfikację danych oraz ich przechowywanie w bazie danych. Najpierw należy zarejestrować nowy opcję konfiguracyjną, a potem dodać odpowiednie pola do tej opcji.

Poniższy przykład pokazuje, jak zarejestrować pole tekstowe i zapisać jego wartość.

function myplugin_settings_init() {
    register_setting(
        'myplugin_options', // 选项组名
        'myplugin_api_key', // 选项名(存储在 wp_options 表中)
        array(
            'type' => 'string',
            'sanitize_callback' => 'sanitize_text_field', // 数据清理回调
            'default' => ''
        )
    );

    add_settings_section(
        'myplugin_section_main',
        '主要设置',
        null,
        'myplugin-settings'
    );

    add_settings_field(
        'myplugin_field_api',
        'API 密钥',
        'myplugin_field_api_cb',
        'myplugin-settings',
        'myplugin_section_main',
        array( 'label_for' => 'myplugin_api_key' )
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

function myplugin_field_api_cb() {
    $value = get_option( 'myplugin_api_key', '' );
    echo '<input type="text" id="myplugin_api_key" name="myplugin_api_key" value="' . esc_attr( $value ) . '" class="regular-text">';
}

W taki sposób dane wysłane w formularzu są przetwarzane. sanitize_text_field Funkcja służy do czyszczenia danych, a potem automatycznego zapisywania ich do bazy danych. wp_options W tabeli nazwa klucza to… myplugin_api_key

Upewnij się, że wtyczka jest bezpieczna i wydajna.

Podczas tworzenia wtyczek bezpieczeństwo i wydajność są kluczowymi kryteriami, na które nie można zignorować. Nieszczelna wtyczka może stać się źródłem problemów dla całego witryny WordPress.

Weryfikacja danych i escape

Nigdy nie wierzyć w dane wprowadzone przez użytkowników. Wszelkie dane pochodzące z zewnętrznych źródeł (np. formularzy, URL-ów, bazy danych) muszą zostać sprawdzone, oczyszczone i poddane procesowi escape przed wyświetleniem lub użyciem.

  • Weryfikacja: sprawdzenie, czy dane odpowiadają oczekiwanemu formacie (np. czy jest to adres e-mail lub liczba).
  • Wyczyśczenie: Usunięcie niedozwolonych znaków lub elementów z danych (np. znaków HTML).
  • Ucieleśnienie (escape): proces kodowania danych podczas ich wyświetlania w HTML, JavaScript lub URL-ach, aby zapobiec atakom typu cross-site scripting (XSS).

WordPress oferuje wiele pomocniczych funkcji, na przykład:
* sanitize_text_field()Usunić niepotrzebne znaki z ciągu tekstowego.
* esc_html()Wykonaj escapeowanie wyświetlanych danych w formacie HTML.
* esc_url()Ukrycie adresu URL.
* wp_kses_post()Zezwolenie na używanie tagów HTML w ramach filtrów według zawartości artykułów.

Poprawne ładowanie skriptów i stylów

Aby nie wpłynąć na szybkość ładowania strony i uniknąć konfliktów, pliki JavaScript i CSS muszą zostać poprawnie zarejestrowane i uruchomione w odpowiednim porządku za pomocą metod dostępnych w WordPress. wp_enqueue_script()wp_enqueue_style() Funkcja.

Następny kod pokazuje, jak załadować specjalne pliki JS i CSS wyłącznie na stronie zarządzania samego pluginu.

function myplugin_load_admin_assets( $hook ) {
    // 只在我们插件的设置页加载
    if ( $hook != 'toplevel_page_myplugin-settings' ) {
        return;
    }
    wp_enqueue_style(
        'myplugin-admin-css',
        plugins_url( 'admin/css/style.css', __FILE__ ),
        array(),
        '1.0.0'
    );
    wp_enqueue_script(
        'myplugin-admin-js',
        plugins_url( 'admin/js/script.js', __FILE__ ),
        array( 'jquery' ), // 声明依赖 jQuery
        '1.0.0',
        true // 在页脚加载
    );
}
add_action( 'admin_enqueue_scripts', 'myplugin_load_admin_assets' );

Taki sposób gwarantuje, że zasoby są ładowane wyłącznie w momencie potrzeby, a zależności (np. od jQuery) są poprawnie obsługiwane. Ponadto parametry wersji pomagają w zarządzaniu cache’em w przeglądaczach.

Podsumowanie.

Rozwoj pluginów dla WordPress jest procesem zorganizowanym, który rozpoczyna się od stosowania standardowych struktur plików i nagłówków informacyjnych. Kluczowym elementem jest biegłe korzystanie z mechanizmów typu „akcje” (actions) i „hooków filtrów” (filter hooks), aby w sposób nieinwazywny integrować dodatkowe funkcje do życiowego cyklu WordPress. Stworzenie jasnego interfejsu administracyjnego dla pluginu oraz ścisłe stosowanie API do konfiguracji znacznie poprawiają doświadczenie użytkownika i bezpieczeństwo danych. Bezpieczeństwo (weryfikacja, czyszenie, escapeowanie danych) oraz wydajność (ładowanie zasobów według potrzeb) stanowią podstawowe kryteria przy rozwoju wysokiej jakości i niezawodnych pluginów. Dodając te kryteria do swoich działań i stosując najlepsze praktyki, będziesz w stanie stworzyć rozszerzenia do WordPress, które są funkcjonalne, bezpieczne i łatwe w obsłudze.

FAQ – najczęściej zadawane pytania.

Jakie podstawowe znajomości są konieczne do tworzenia wtyczek dla WordPress?

Aby rozwijać pluginy dla WordPress, konieczne jest zapoznanie się z językiem programowania PHP, ponieważ pluginy są w większości przypadków tworzone w tym języku. Ponadto należy mieć podstawową znajomość HTML, CSS i JavaScript, które są używane do budowy interfejsów użytkownika i realizacji interakcji. Najważniejsze jest zrozumienie podstawowej architektury WordPress, zwłaszcza systemu hooków (akcje i filtry), struktury tematów (tema templates) oraz operacji z bazą danych. WP_Querywpdb Klasa).

Jak debugować wypełniany w toku plugin do WordPress?

Najskuteczniejszy sposób to… wp-config.php Włącz tryb debugowania WordPressa w pliku. WP_DEBUG Konstanta ustawiona jest na… trueTo umożliwi wyświetlenie błędów, ostrzeżzeń i powiadomień PHP na stronie. Możesz też użyć… error_log() Funkcja zapisała informacje o debugowaniu do loga błędów na serwerze. Dla bardziej złożonych procedur debugowania można zastanowić się nad użyciem specjalnych narzędzi do debugowania PHP, np. Xdebug.

Jak powinny pliki rozszerzalne (plug-iny) obsługiwać operacje na bazie danych?

Dla prostego przechowywania danych zaleca się używanie API opcji w WordPress.add_option, get_option, update_optionMożna używać tego formatu do przechowywania danych w postaci par klucza-wartości. Jeśli potrzebujesz strukturalnych danych z dostosowaną tabelą, możesz to zrobić po aktywacji wtyczki. dbDelta() Funkcje służą do bezpiecznego tworzenia lub aktualizowania struktury tabeli, a to wymaga stosowania określonego formatu SQL. Koniecznie je używaj. $wpdb Globalny obiekt wykonywa wszystkie zapytania do bazy danych, a metoda `prepare` tego obiektu jest używana do zapobiegania atakom typu SQL injection.

Jak zrobić, aby mój plugin obsługiwał wielojęzyczność i był dostosowany do różnych kultur?

WordPress wykorzystuje framework GNU gettext do realizacji funkcji internacionalizacji. Konieczne jest poprawne ustawienie odpowiednich informacji w nagłówku głównego pliku pluginu. Text DomainDomain PathW kodzie wszystkie teksty, które wymagają tłumaczenia, należy umieścić w specjalnych zagnaczkach lub obiektach przeznaczonych do przechowywania tekstu do tłumaczenia. __()(wykorzystywane do powrotu wartości) lub _e()(Ma być użyte w celu bezpośredniego wyświetlenia) Funkcje tłumaczeniowe muszą zostać umieszczone w odpowiednie obiekty. Następnie, za pomocą narzędzia takiego jak Poedit, należy skanować źródłowy kod, aby wygenerować tłumaczenie. .pot Pliki szablonów, na których opiera się tworzenie wersji językowych. .po.mo Przetłumacz plik i umieść go w wskazanym miejscu. Domain Path W katalogu.

Po ukończeniu rozwoju, jak mogę opublikować swój plugin w oficjalnym katalogu?

Najpierw upewnij się, że twoje wtyczki w pełni spełniają wymogi opisane w oficjalnym „Przewodniku po rozwoju wtyczek” (Plugin Development Handbook) oraz wymagania dotyczące ich publikacji, w tym standardy kodu, wymogi bezpieczeństwa oraz umowy licencji (musi być kompatybilna z licencją GPL). Następnie utwórz konto na stronie WordPress.org i złoż aplikację do publikacji wtyczki. Po przyznaniu twojej aplikacji możesz użyć narzędzia Subversion, aby przesłać kod wtyczki do oficjalnego repozytorium kodu. Po opublikacji konieczne jest uzupełnienie strony opisującej wtyczkę, włącznie z banerem, ikoną, zdjęciami i szczegółowymi informacjami, aby użytkownicy mogli ją oglądać i pobierać.