Zaczynamy od zera: poznajmy podstawowe kroki i najlepsze praktyki w tworzeniu wtyczek do WordPressa.

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

Zaczynamy od zera: poznajmy podstawowe kroki i najlepsze praktyki w tworzeniu wtyczek do WordPressa.

Rozwoj wtyczek dla WordPress jest doskonałym sposobem na rozszerzenie funkcjonalności witryny internetowej opartej na tym systemie. Poprzez tworzenie własnych wtyczek programiści mogą dodawać unikalne elementy do witryny, bez konieczności modyfikacji kodu źródłowego WordPress. To nie tylko zwiększa elastyczność witryny, ale także gwarantuje, że dostosowane funkcje będą bezpiecznie i stabilnie działać po aktualizacjach core’a WordPress. Dobrze zorganizowana wtyczka WordPress spełnia określone wymogi strukturalne, standardy kodowania oraz interfejs API WordPress.

Ten tekst pokieruje cię krokiem po kroku przez cały proces od stworzenia pierwszego pliku rozszerzenia aż po bezpieczne opublikowanie tego rozszerzenia. Omawia kluczowe pojęcia, narzędzia oraz zalecenia dotyczące najlepszych praktyk, które należy znać podczas rozwoju oprogramowania.

Polecamy lekturę. Kompletny przewodnik po tworzeniu wtyczek WordPress: od zera do wysokiej jakości rozszerzeń WordPress.

Środowisko rozwoju i podstawowa struktura

Przed pisaniem jakiegoś kodu istotne jest stworzenie odpowiedniego środowiska rozwoju. Zaleca się używać lokalnych narzędzi do rozwoju, takich jak Local by Flywheel, XAMPP lub MAMP, które umożliwiają szybkie konfigurowanie środowiska zawierającego PHP, MySQL oraz serwer web. Ponadto niezbędne są editor kodu (np. VS Code, PhpStorm) oraz narzędzia do debugowania (np. Query Monitor, Debug Bar).

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.

Stworz swoj pierwszy plik z rozszerzeniem (plugin).

Najprostszym formatem pluginu dla WordPress jest plik, który znajduje się w określonym miejscu w strukturze plików witryny. /wp-content/plugins/ Pliki PHP znajdujące się w katalogu. Na początku głównego pliku wtyczki muszą znajdować się standardowe komentarze zawierające informacje o wtyczce – to jest podstawa dla identyfikacji i zarządzania wtyczkami w WordPress.

Stworzyć coś o nazwie… my-first-plugin.php Plików i wpisz następujący tekst:

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

Zapisz ten plik w… /wp-content/plugins/my-first-plugin/ W folderze, a potem po logowaniu do panelu administracyjnego WordPress na stronie “Dodatki” (Plugins), będziesz mógł zobaczyć i aktywować ten dodatek. Choć na razie nie ma on żadnych funkcji, jego struktura jest już gotowa.

Katalog plików i organizacja plików w rozszerzeniu

Wraz z rosnącą liczbą funkcji pojedyncze pliki stają się trudniejsze do utrzymania w dobrym stanie. Dobrze zorganizowany katalog pluginów składa się zwykle z następujących elementów:
* Główny plik wtyczki:plugin-name.php
* includes/ Katalog: zawiera pliki z klasyfikacją kluczowych funkcji lub metod.
* admin/ Katalog: zawiera kod związany z backendem, pliki CSS oraz skrypty JavaScript.
* public/ Katalog: zawiera kod, CSS oraz JavaScript związane z interfejsem użytkownika.
* assets/ Katalog: zawiera pliki z zdjęciami, arkuszy stylu (style sheets) oraz skryptów.
* languages/ Katalog: zawiera pliki z tłumaczeń międzynarodowych (.pot, .po, .mo).
* uninstall.php Plik: opcje stosowane do czyszczenia bazy danych w momencie usunięcia wtyczki.

Polecamy lekturę. Pełny przewodnik po rozwoju pluginów dla WordPressa: od podstaw po praktyczne zastosowania

Podstawowe koncepcje i technologie rozwoju oprogramowania

Podstawa rozwoju pluginów dla WordPress polega na zrozumieniu i biegłym używaniu dostępnych API (interfejsów aplikacyjnych), w szczególności aktywnych haczków (Action Hooks), haczków filtrów (Filter Hooks) oraz skrótów kodu (Shortcodes).

Opanowanie użycia aktywnych háków (ang. action hooks)

Aktywnie działające “haki” (ang. action hooks) umożliwiają wstawianie własnego kodu w określonych momencach wykonywania WordPress. add_action() Funkcja umożliwia przypisanie Twojej własnej funkcji do jakiegoś „haka” (hooka).

Na przykład następny kod dodaje jeden rząd metatagów dostosowanych do wszystkich nagłówków stron:

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%
function myplugin_add_custom_meta() {
    echo '<meta name="my-custom-meta" content="value">';
}
add_action( 'wp_head', 'myplugin_add_custom_meta' );

Kolejnym często używanym przykładem jest wykonywanie operacji inicjalizacyjnych po aktywacji wtyczki, np. tworzenie tabel w bazie danych. To wymaga montowania odpowiedniej funkcji. register_activation_hook Na haczu.

Modyfikacja zawartości za pomocą filtrów

Filtry hooki są przeznaczone do modyfikacji danych, które są przetwarzane przez WordPress. Możesz ich używać, aby dostosować zachowanie systemu według swoich potrzeb. add_filter() Funkcje służą do zmiany treści tekstu, wartości opcji itd. Funkcje filtrów muszą mieć wartość zwrotną (return value).

Następny przykład pokazuje, jak automatycznie dodawać końcowy tekst według ustawień do treści artykułu:

Polecamy lekturę. Pełny przewodnik po tworzeniu pluginów dla WordPress: jak stworzyć swój pierwszy funkcjonalny plugin z niczego

function myplugin_modify_post_content( $content ) {
    if ( is_single() ) {
        $custom_text = '<p><em>Dziękuję za przeczytanie tego artykułu!</em></p>'if (isset($custom_text)) {  
        $content .= $custom_text;  
    }  
    return $content;  
}
add_filter( 'the_content', 'myplugin_modify_post_content' );

Tworzenie i zarządzanie krótkimi kodami

Krótkie kody umożliwiają użytkownikom łatwe wstawianie dynamicznego zawodu generowanego przez pluginy w artykuły, strony internetowe lub narzędzia. add_shortcode() Funkcja umożliwia zarejestrowanie nowego skróconego kodu.

Zarejestruj nazwę… [greeting] To jest krótki kod, który może wyświetlać różne powitania w zależności od czasu:

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_greeting_shortcode( $atts ) {
    $hour = date( 'G' );
    $greeting = ( $hour ? 'Dobry dzień!' : ( ($hour) &lt; 18 ) ? &#039;Dzień dobry!&#039; : &#039;Dobry wieczór!&#039; );
    return &#039;<div class="greeting">'`. esc_html($greeting).`'</div>'add_shortcode( 'greeting', 'myplugin_greeting_shortcode' );

Bezpieczeństwo wtyczek i zarządzanie danymi

Rozwoj bezpiecznego pluginu to pierwszy krok w ochronie witryny internetowej i danych użytkowników. Wymaga to weryfikacji wprowadzanych danych, escapeowania wyświetlanych informacji, sprawdzania upoważnień oraz bezpiecznego obsługiwania danych.

Implementacja weryfikacji danych i ich escapeowania

Nigdy nie powinniśmy ufać żadnym wprowadzonym danym od użytkowników. Przed zapisem danych do bazy danych lub wyświetleniem ich w przeglądarcu konieczne jest ich sprawdzenie oraz uwzględnienie specjalnych zasad formatowania (tzw. escape).

  • Weryfikacja: Użyj sanitize_text_field(), sanitize_email(), intval() Należy poczekać, aż funkcja oczyści dane wprowadzone przez użytkownika.
  • Ucieleśnienie: Podczas wyświetlania danych w HTML, JavaScript lub URL należy używać odpowiednich funkcji ucieleśniających. esc_html(), esc_js(), esc_url()

Na przykład: bezpieczne obsługiwanie i wyświetlenie nazwy użytkownika podanej w formularzu.

$user_input = $_POST['username'] ?? ''; // 使用空合并运算符提供默认值
$clean_username = sanitize_text_field( $user_input );
echo '你好,' . esc_html( $clean_username );

Używanie API opcji WordPress

Dla prostych ustawień, które należy zapisać (np. włączniki, tekst itd.), należy używać API opcji WordPress. Dzięki temu uzyskuje się łatwy dostęp do tych ustawień i możliwość ich edycji. add_option(), get_option(), update_option()delete_option() Funkcje takie jak … umożliwiają bezpieczne przechowywanie danych. wp_options W tabeli.

Utworzyć ustawienia dla pluginu i uzyskać je:

// 保存一个选项
update_option( 'myplugin_setting_color', '#336699' );

// 获取一个选项,如果不存在则使用默认值
$color = get_option( 'myplugin_setting_color', '#000000' );

Utwórz niestandardową tabelę w bazie danych.

Gdy plugin wymaga przechowywania złożonych danych relacyjnych, może być konieczne stworzenie własnych tabel w bazie danych. To zwykle musi być wykonane w momencie aktywacji pluginu, z zachowaniem zgodności z wymaganiami wzoru bazy danych WordPress.

my-first-plugin.php Dodaj funkcję tworzenia tabeli do aktywacji hooków w pluginie:

function myplugin_create_custom_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'myplugin_items'; // 使用 $wpdb->prefix 确保表前缀正确
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        name varchar(100) NOT NULL,
        created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
        PRIMARY KEY (id)
    ) $charset_collate;";

    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}
register_activation_hook( __FILE__, 'myplugin_create_custom_table' );

Tworzenie interfejsu administracyjnego dla backendu pluginu

Stworzenie intuicyjnego witryny konfiguracji w tle dla twojego pluginu jest kluczowym elementem dla zapewnienia dobrego doświadczenia użytkownika. WordPress oferuje różne API, które ułatwiają tworzenie meniów administracyjnych, stron konfiguracji oraz form.

Dodaj menu zarządzania oraz jego podmenu.

Użyj add_menu_page()add_submenu_page() Funkcja umożliwia dodanie elementów menu do bocznego menu w panelu administracyjnym WordPress dla twojego pluginu.

Następny kod dodaje górny menu “Moje dodatki” oraz podmenu “Ustawienia”:

Funkcja myplugin_add_admin_menu() {
    // Dodaj stronę główną menu
    add_menu_page(
        'Ustawienia mojej wtyczki',  // Tytuł strony
        'Moja wtyczka',  // Tytuł menu
        'manage_options',  // Wymagane uprawnienia
        'myplugin-dashboard',  // Slug menu
        'myplugin_dashboard_page',  // Funkcja wyświetlająca zawartość strony
        'dashicons-admin-generic',  // Ikona
        30   // Pozycja w menu
    );

    // Dodaj podstronę menu
    add_submenu_page(
        'myplugin-dashboard',  // Slug strony głównej menu
        'Ustawienia wtyczki',  // Tytuł strony
        'Ustawienia',  // Tytuł menu
        'manage_options',  // Uprawnienia
        'myplugin-settings',  // Slug podstrony
        'myplugin_settings_page'  // Funkcja wyświetlająca zawartość strony
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// Zdefiniuj funkcję wyświetlającą stronę “Dashboard”
function myplugin_dashboard_page() {
    echo '  Funkcja myplugin_add_admin_menu() {
    // Dodaj stronę główną menu
    add_menu_page(
        'Ustawienia mojej wtyczki',  // Tytuł strony
        'Moja wtyczka',  // Tytuł menu
        'manage_options',  // Wymagane uprawnienia
        'myplugin-dashboard',  // Slug menu
        'myplugin_dashboard_page',  // Funkcja wyświetlająca zawartość strony
        'dashicons-admin-generic',  // Ikona
        30   // Pozycja w menu
    );

    // Dodaj podstronę menu
    add_submenu_page(
        'myplugin-dashboard',  // Slug strony głównej menu
        'Ustawienia wtyczki',  // Tytuł strony
        'Ustawienia',  // Tytuł menu
        'manage_options',  // Uprawnienia
        'myplugin-settings',  // Slug podstrony
        'myplugin_settings_page'  // Funkcja wyświetlająca zawartość strony
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// Zdefiniuj funkcję wyświetlającą stronę „Dashboard”
function myplugin_dashboard_page() {
    echo '<div class="wrap"><h1>Moja panela kontrolna dla dodatków (plug-inów)</h1></div>';
}

// 定义“设置”页面的回调函数
function myplugin_settings_page() {
    echo '<div class="wrap"><h1>Ustawienia mojej wtyczki.</h1></div>';
}

API do konfiguracji integracji służy do tworzenia formularzy.

Ustawienia API w WordPressu oferują bezpieczny i standardowy sposób tworzenia, weryfikacji oraz zapisywania informacji zawartych w formularzach. Proces ten obejmuje rejestrację ustawień, dodawanie obszarów i polów do formularzy.

Poniżej znajduje się prosty przykład strony konfiguracji zawierającej pole tekstowe:

function myplugin_settings_init() {
    // 注册一个新的设置项 “myplugin_settings”
    register_setting( 'myplugin_settings_group', 'myplugin_settings' );

    // 添加一个新的设置区域
    add_settings_section(
        'myplugin_section_basic',
        '基础设置',
        null, // 区域描述的回调函数,这里不需要
        'myplugin-settings' // 页面 Slug
    );

    // 在区域内添加一个字段
    add_settings_field(
        'myplugin_field_api_key',
        'API 密钥',
        'myplugin_field_api_key_callback', // 渲染字段 HTML 的回调函数
        'myplugin-settings',
        'myplugin_section_basic'
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

// 字段的回调函数
function myplugin_field_api_key_callback() {
    $options = get_option( 'myplugin_settings' );
    $value = $options['api_key'] ?? '';
    echo '<input type="text" name="myplugin_settings[api_key]" value="' . esc_attr( $value ) . '" class="regular-text">'// Modyfikacja wcześniejszej funkcji wywoływanej przy zmianie ustawień, aby wyświetlić formularz
  function myplugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Ustawienia mojej wtyczki.</h1>
        <form action="/pl/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'myplugin_settings_group' ); // 输出必要的安全字段
            do_settings_sections( 'myplugin-settings' ); // 输出所有设置区域和字段
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="pl"/></form>
    </div>
    &lt;?php
}

Podsumowanie.

Rozwoj pluginów dla WordPressu polega na zrozumieniu jego podstawowej struktury, a potem stopniowym pogłębieniu się w obszar API i zabezpieczeń, aby w końcu stworzyć kompletną interfejs użytkownika. Kluczowym elementem jest stosowanie standardów programowania i najlepszych praktyk WordPressa, takich jak poprawne wykorzystanie „hooków”, ścisłe działanie w zakresie bezpieczeństwa danych, a także wykorzystanie wewnętrznych API do konfiguracji i zarządzania. Proces rozpoczyna się od stworzenia prostego pliku z komentarzami zawierających informacje o pluginie, po czym dodaje się kolejne elementy, takie jak akcje (actions), filtry (filters) i skrócone kody (shortcodes), a następnie zajmuje się zarządzaniem bazą danych oraz interfejsem administracyjnym. Każdy krok jest oparty na mocnym i stabilnym frameworku WordPressa. Poprzez systematyczne uczenie się i stosowanie tych procedur będzie można tworzyć pluginy, które są funkcjonalne, bezpieczne, niezawodne i łatwe w obsłudze, a tym samym przyczynić się do rozwoju ogromnego ekosystemu WordPressa na całym świecie.

FAQ – najczęściej zadawane pytania.

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

Aby rozwijać pluginy dla WordPress, konieczne jest opanowanie języka programowania PHP, ponieważ kod serca pluginów jest pisany w tym języku. Ponadto należy mieć podstawową znajomość HTML, CSS i JavaScript, które są używane do budowy interfejsu użytkownika i realizacji interakcji. Najważniejsze jest zrozumienie kluczowych conceptów WordPress, takich jak „hooki” (Actions i Filters), cykle (The Loop), struktura tematów (templates) oraz architektura bazy danych WordPress.

Jak debugować moje wtyczki dla WordPress?

Najpierw… wp-config.php Włącz tryb debugowania WordPressa w pliku. WP_DEBUG Konstanta ustawiona jest na… trueTo umożliwi wyświetlenie błędów i ostrzeżzeń PHP na ekranie. Ponadto można użyć… error_log() Funkcja umożliwia zapisy informacji o debugowaniu do logów błędów na serwerze. Ponadto instalacja profesjonalnych dodatków do debugowania, takich jak Query Monitor, daje możliwość oglądania w czasie rzeczywistym szczegółowych danych dotyczących wykonywanych zapytań do bazy danych, działania hooków, ładowania skryptów itd. To niezbędne narzędzia w procesie rozwoju oprogramowania.

Jak moja wtyczka może obsługiwać kilka języków (internacjonalizację)?

WordPress wykorzystuje framework technologiczny GNU gettext do realizacji funkcji internacionalizacji (i18n). Najpierw, w kodzie pluginów, wszystkie teksty wymagające tłumaczenia muszą być oznaczone specjalnymi znakami. ()_e() Należy najpierw zapakować funkcję tłumaczenia, a następnie ją skonfigurować. () Funkcja określa domen tekstowy (Text Domain), który musi zostać zdefiniowany w nagłówku pliku rozszerzenia. Następnie, za pomocą narzędzi takich jak Poedit, skanuje się źródłowy kod pliku rozszerzenia, aby wygenerować niezbędne elementy. .pot Pliki szablonów, na których opierają się różne wersje tekstu w różnych językach. .po I po skompilowaniu. .mo Plik należy umieścić w modułu (pluginie). /languages/ W katalogu. Na koniec, użyj… load_plugin_textdomain() Tłumaczenie: „Function loading”.

Jak złożyć moje dodatkowe funkcje (plugin) do oficjalnego katalogu dodatków WordPress?

Przed wprowadzeniem dodatku do oficjalnego katalogu należy upewnić się, że spełnia w pełni wymogi i zasady stosowane przy tworzeniu dodatków dla WordPress. Konieczne jest posiadanie konta na stronie WordPress.org, po czym należy wypełnić formularz na stronie przeznaczonej do zgłoszenia dodatków. Zespół ds. audycji sprawdzi bezpieczeństwo Twojego kodu, licencję (musi być kompatybilna z licencją GPL), jakość kodu, dokumentację oraz zgodność dodatku z wymaganiami platformy. Po pozytywnym wyniku audycji otrzymasz adres repozytorium SVN, do którego należy wysłać swój kod. Po tym dodatek zostanie umieszczony w oficjalnym katalogu. Proces może trwać kilka tygodni i jest opisany w szczegółowych standardach audycji.