Rozwoj pluginów dla WordPress: budowanie własnych funkcjonalności od zera

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

Dlaczego warto zdecydować się na stworzenie własnej wtyczki WordPress?

W ekosystemie WordPress wtyczki mają kluczowe znaczenie dla rozszerzenia funkcjonalności strony internetowej. Podczas gdy oficjalny katalog i rynki stron trzecich oferują szeroki wybór, tworzenie własnych wtyczek oferuje wyjątkowe korzyści. Gdy istniejące wtyczki nie pasują idealnie do logiki biznesowej, mają wąskie gardła wydajności lub są przeładowane niepotrzebnymi funkcjami, najlepszym rozwiązaniem staje się tworzenie ich na zamówienie. Pozwala to na zbudowanie lekkiego, wysoce skoncentrowanego rozwiązania, które zawiera tylko niezbędny kod w celu zwiększenia wydajności witryny.

Co więcej, niestandardowe wtyczki oferują pełną kontrolę. Możesz iterować funkcje w oparciu o potrzeby projektu, płynnie integrować wewnętrzne interfejsy API lub usługi innych firm i upewnić się, że kod spełnia Twoje standardy bezpieczeństwa i kodowania. Dla programistów jest to również świetny sposób na głębsze zrozumienie podstawowej architektury WordPress - w tym jegoHook(haki) systemy i operacje bazodanowe - doskonała praktyka. Opanowanie umiejętności tworzenia wtyczek oznacza, że będziesz w stanie tworzyć prawdziwie dopasowane rozwiązania dla każdego projektu WordPress.

Zbuduj swoją pierwszą infrastrukturę wtyczek

Tworzenie wtyczki WordPress zaczyna się od prostego katalogu i pliku głównego. Infrastruktura wtyczki jest kamieniem węgielnym dla całego późniejszego rozwoju funkcji.

Polecamy lekturę. Naucz się tworzyć wtyczki do WordPressa: buduj skuteczne niestandardowe moduły funkcjonalne od podstaw.

Tworzenie głównego pliku wtyczki

Wszystkie wtyczki WordPress muszą mieć główny plik PHP, który zawiera określone komentarze nagłówka wtyczki, które są kluczem do identyfikacji wtyczki przez WordPress. Musisz dodać komentarz nagłówka do plikuwp-content/pluginsUtwórz nowy folder w katalogu, na przykładmy-first-plugina następnie utworzyć plik główny w tym folderzemy-first-plugin.php

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.

Komentarz na początku pliku musi zawierać informacje o nazwie wtyczki, opisie, wersji i autorze. Poniżej znajduje się minimalny przykład:

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

Po zapisaniu pliku będzie można go zobaczyć i aktywować na stronie Wtyczki w zapleczu WordPress. Nie ma jeszcze żadnej funkcjonalności, ale struktura jest na miejscu.

Organizowanie katalogów i plików wtyczek

Wraz ze wzrostem funkcjonalności kluczowa staje się odpowiednia struktura plików. Zaleca się, aby różne typy kodu były rozdzielone do różnych podkatalogów, ponieważ pomoże to w utrzymaniu w czasie. Typowy katalog prostej wtyczki może wyglądać następująco:

my-first-plugin/
├── my-first-plugin.php      // 主文件,包含插件头和管理核心钩子
├── includes/                // 存放核心功能类或函数文件
│   └── class-core-functions.php
├── admin/                   // 后台相关的CSS、JS和PHP文件
│   ├── css/
│   ├── js/
│   └── admin-settings.php
├── public/                  // 前端相关的CSS、JS和PHP文件
│   ├── css/
│   ├── js/
│   └── class-public-handler.php
└── languages/               // 国际化翻译文件(.po/.mo)

W głównym plikumy-first-plugin.phpW tym przypadku możesz użyć…require_onceinclude_onceaby wprowadzić te modułowe pliki na żądanie. Ta struktura wyraźnie oddziela logikę back-endu, prezentację front-endu i podstawową funkcjonalność.

Polecamy lekturę. W prosty i zrozumiały sposób: kompletny przewodnik po tworzeniu wtyczek WordPressa od podstaw.

Funkcjonalność z hakami i filtrami

Architektura wtyczek WordPress opiera się na systemie haków sterowanych zdarzeniami, który składa się zAction(Działanie) iFilter(filtry). Ich zrozumienie i wykorzystanie jest podstawą tworzenia wtyczek.

Wykonywanie zadań za pomocą haków akcji

Haki akcji umożliwiają wstawianie własnego kodu w określonych momentach cyklu życia WordPressa (np. podczas inicjalizacji, ładowania nagłówka front-end, zapisywania postu). Możesz użyćadd_action()“montuje” niestandardowe funkcje do tych haków.

Na przykład, jeśli chcesz dodać powiadomienie administratora w górnej części zaplecza administracyjnego witryny, możesz użyć funkcjiadmin_noticesTen hak akcji. Najpierw zdefiniuj funkcję w głównym pliku wtyczkimy_custom_admin_notice, a następnie zamontować go na haku.

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%
// Zdefiniuj funkcję wyświetlającą powiadomienie
function my_custom_admin_notice() {
    echo '<div class="notice notice-success is-dismissible"><p>Moja niestandardowa wtyczka została pomyślnie aktywowana!</p></div>';
}
// zamontowanie funkcji do haka akcji admin_notices
add_action( 'admin_notices', 'my_custom_admin_notice' );

Gdy WordPress wykonuje…admin_noticesGdy ten punkt zostanie osiągnięty, zamontowana funkcja zostanie wywołana automatycznie, wysyłając powiadomienie. Haki akcji są używane do “zrobienia czegoś” i nie wymagają wartości zwrotnej.

Modyfikacja danych za pomocą hooków filtrów

W przeciwieństwie do haków akcji, haki filtrów służą do “modyfikowania czegoś”. Pozwalają one modyfikować dane przekazywane przez rdzeń WordPressa, inne wtyczki lub motywy. Można użyćadd_filter()aby zastosować filtr.

Klasycznym tego przykładem jest modyfikowanie końcowego tekstu treści posta. WordPress udostępnia funkcjęthe_contentFiltry umożliwiające modyfikowanie treści postów, które mają zostać wyświetlone.

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

// Zdefiniuj funkcję, która modyfikuje zawartość
function append_custom_text_to_content( $content ) {
    if ( is_single() ) { // działa tylko dla pojedynczych stron postów
        $custom_text = '<p><em>Dzięki za przeczytanie! Ten artykuł jest zasilany przez moją wtyczkę.</em></p>'.
        $content . = $custom_text.
    }
    return $content; // musi zwrócić zmodyfikowaną zawartość
}
// Zamontuj funkcję do haka filtru the_content
add_filter( 'the_content', 'append_custom_text_to_content' ).;

Funkcja filtru pobiera wartość wejściową (w tym przypadku$content), która musi zwrócić wartość po przetworzeniu. W ten sposób można elastycznie zmieniać prawie wszystkie dane przetwarzane przez WordPress.

Utwórz stronę ustawień administratora dla wtyczki

W przypadku wtyczek, które wymagają konfiguracji użytkownika, konieczne jest zapewnienie przyjaznej dla użytkownika strony ustawień zaplecza. WordPress zapewnia szereg interfejsów API, aby uprościć proces tworzenia stron menu i stron opcji.

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.

Dodaj menu najwyższego poziomu lub podmenu

Możesz użyćadd_menu_page()aby utworzyć oddzielne menu najwyższego poziomu backendu dla wtyczki lub użyć funkcjiadd_submenu_page()Utworzenie menu podrzędnego istniejącego menu (np. “Ustawienia”). Zazwyczaj operacja ta wymaga zamontowania w menuadmin_menuNa haczkach akcji.

Poniższy kod pokazuje, jak dodać prostą stronę ustawień najwyższego poziomu:

function my_plugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',        // 所需权限(管理员)
        'my-plugin-settings',    // 菜单slug(URL标识)
        'my_plugin_settings_page', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标(Dashicons)
        80                       // 菜单位置
    );
}
add_action( 'admin_menu', 'my_plugin_add_admin_menu' );

Następnie musisz definiować funkcję wywoływaną w nagraniu (callback function).my_plugin_settings_pagedo renderowania zawartości HTML strony.

Tworzenie formularzy konfiguracji z opcjami zapisu

WordPressSettings APIZapewnia znormalizowane podejście do bezpiecznego rejestrowania, sprawdzania poprawności i zapisywania ustawień. Pozwala uniknąć bezpośredniego przetwarzania$_POSTdanych, zwiększając bezpieczeństwo.

Najpierw użyjregister_setting()Zarejestruj grupę ustawień za pomocąadd_settings_section()Dodaj region i użyjadd_settings_field()Dodaj określone pola. Następnie we wcześniej zdefiniowanej funkcji wywołania zwrotnego użyj metodysettings_fields()do_settings_sections()aby wyświetlić formularz.

function my_plugin_settings_page() {
    // Sprawdź uprawnienia użytkownika
    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( '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
}

przejść (rachunek lub inspekcję itp.)Settings APIMożesz łatwo tworzyć strony konfiguracji zawierające pola tekstowe, menu rozwijane, pola wyboru i wiele innych pól, a wszystkie dane są bezpiecznie zapisywane w plikuwp_optionsdo której można uzyskać dostęp poprzezget_option()Funkcje są wywoływane na front-endzie lub back-endzie.

Zapewnienie bezpieczeństwa i łatwości konserwacji wtyczek

Napisanie solidnej wtyczki to nie tylko implementacja funkcjonalności, ale także bezpieczeństwo, wydajność i przyszła łatwość konserwacji. Przestrzeganie najlepszych praktyk ma kluczowe znaczenie.

Sprawdzanie poprawności danych, ucieczki i przetwarzanie niezabezpieczone

Jest to pierwsza linia obrony dla bezpieczeństwa wtyczek. Wszystkie dane od użytkowników lub źródeł zewnętrznych (takich jak$_GET$_POST$_COOKIE) muszą zostać poddane rygorystycznej walidacji, zanim zostaną wprowadzone do bazy danych lub wyświetlone na stronie.

W przypadku danych wejściowych (zanim zostaną zapisane w bazie danych) należy użyć funkcji sprawdzania poprawności, takiej jaksanitize_text_field()absint()aby wyczyścić dane. W przypadku danych wyjściowych (pobieranych z bazy danych i wyświetlanych przed przeglądarką) należy użyć funkcji ucieczki, takiej jakesc_html()esc_attr()esc_url()aby zapobiec atakom XSS.

// Obsługa przesyłania formularza (przykład, zwykle obsługiwany przez API ustawień w options.php)
$user_input = isset( $_POST['my_field'] ) ? sanitize_text_field( $_POST['my_field'] ) : '';

// Wyświetlanie danych z bazy danych na interfejsie użytkownika
echo '<div class="info">' . esc_html( get_option( 'my_saved_option' ) ) . '</div>';

Ponadto, podczas wykonywania zapytania do bazy danych, należy użyć funkcji$wpdbMetody dostępne w klasie (np.)$wpdb->prepare()), aby zapobiec wstrzyknięciu kodu SQL.

Wsparcie w zakresie internacjonalizacji i lokalizacji

Aby wtyczka mogła być używana przez użytkowników na całym świecie, obsługa internacjonalizacji (i18n) jest koniecznością. Oznacza to, że wszystkie ciągi znaków skierowane do użytkownika powinny być opakowane przy użyciu funkcji tłumaczenia WordPress.

Użyj__()do przetłumaczenia i zwrócenia ciągu znaków przy użyciu funkcji_e()aby bezpośrednio przetłumaczyć i wyświetlić ciąg znaków. Zdefiniowana w nagłówku wtyczki, funkcjaText Domain(pole tekstowe) musi być zgodne z polem tekstowym użytym tutaj.

// 错误示例:直接输出英文字符串
echo “Hello World”;

// 正确示例:可翻译的字符串
echo esc_html__( ‘Hello World’, ‘my-first-plugin’ );
// 或者
_e( ‘Hello World’, ‘my-first-plugin’ );

Następnie można użyć narzędzia takiego jak Poedit, aby wyodrębnić wszystkie oznaczone ciągi w celu wygenerowania pliku.potpliki dla tłumaczy do tworzenia różnych języków.po.moPlik. Umieść go w katalogulanguagesWordPress automatycznie załaduje tłumaczenie zgodnie z językiem witryny.

Podsumowanie.

Tworzenie wtyczek WordPress to systematyczny proces przekształcania pomysłów w funkcjonalność. Zaczynając od stworzenia pliku głównego zawierającego standardowe komentarze nagłówka, zrobiłeś już pierwszy krok. Dogłębne zrozumienie i wykorzystanie akcji i haków filtrów jest sercem nadawania wtyczkom dynamicznych możliwości, które pozwalają na płynne wkroczenie we wszystkie punkty działania WordPressa. Interfejs administratora, zbudowany za pomocą interfejsu API ustawień, zapewnia przyjazny dla użytkownika portal konfiguracyjny, który zwiększa profesjonalizm wtyczki.

Zasady bezpieczeństwa muszą być stosowane w całym procesie rozwoju, w tym ścisłej walidacji danych, ucieczki i znormalizowanych operacji bazodanowych. Jednocześnie obsługa internacjonalizacji pozwoli wtyczce obsługiwać szerszy zakres użytkowników na całym świecie. Przestrzeganie jasnej struktury organizacji plików (np. oddzielenie back-endu, front-endu i podstawowego kodu) i standardów kodowania zapewni solidne podstawy do długoterminowej konserwacji wtyczki i rozszerzania jej funkcjonalności. Pamiętaj, że świetna wtyczka to coś więcej niż tylko działający kod, to rozwiązanie, które jest bezpieczne, wydajne i łatwe w utrzymaniu.

FAQ – najczęściej zadawane pytania.

Jakie są podstawowe umiejętności potrzebne do stworzenia wtyczki WordPress?

Będziesz musiał znać podstawy języka PHP, ponieważ wtyczka jest napisana głównie w PHP. Niezbędne jest również zrozumienie HTML, CSS i JavaScript do tworzenia interfejsów i interakcji front-end i back-end. Kluczową rzeczą jest opanowanie wiedzy specyficznej dla WordPressa, w tym jego systemu haków (Actions i Filters), klas operacji bazodanowych$wpdb, Settings API i REST API, między innymi. Przydatne jest również pewne zrozumienie motywów WordPress i priorytetów uruchamiania wtyczek.

Jak debugować samodzielnie opracowaną wtyczkę WordPress?

Najpierw upewnij się, że nawp-config.phpUwolniono dostęp do pliku.WP_DEBUGktóry wyświetla błędy PHP, ostrzeżenia i powiadomienia bezpośrednio na stronie. Korzystanie z trybuerror_log()lub zapisywać informacje w niestandardowych plikach dziennika w celu śledzenia zmiennych i procesów. Złożone wywołania Ajax lub REST API można przeglądać za pomocą panelu “Sieć” w narzędziach programistycznych przeglądarki. Ponadto istnieje wiele doskonałych wtyczek, takich jak “Query Monitor”, które mogą być dogłębną analizą zapytań do bazy danych, wykonywania haków i wąskich gardeł wydajności, jest rozwój narzędzi do debugowania.

Jak opublikować wtyczkę w oficjalnym katalogu WordPress po jej opracowaniu?

Po pierwsze, należy upewnić się, że kod wtyczki jest zgodny z oficjalnymi standardami kodowania WordPress i wymaganiami katalogowymi, na przykład musi zawierać standardowy plikreadme.txtDokumentacja. Następnie złóż wniosek o konto dewelopera na WordPress.org i prześlij swoją wtyczkę do recenzji. Proces weryfikacji sprawdza jakość kodu, bezpieczeństwo, umowę licencyjną (musi być zgodna z licencją GPL) i opisy funkcji. Po przejściu recenzji możesz użyć narzędzia SVN, aby przesłać kod wtyczki do oficjalnego repozytorium SVN, po czym możesz zaktualizować wersję wtyczki w interfejsie administratora zaplecza.

Jaka jest różnica między niestandardową wtyczką a dodawaniem kodu do pliku functions.php motywu?

Dodaj kod do bieżącego motywufunctions.phpDokumentacja to łatwy sposób na szybkie przetestowanie lub dodanie funkcjonalności specyficznej dla witryny. Istnieją jednak oczywiste wady tego podejścia: funkcjonalność jest powiązana z motywem, a po przełączeniu motywu funkcjonalność zawodzi. Kodowi brakuje również dobrej hermetyzacji i przestrzeni nazw i jest podatny na konflikty z innym kodem.

Z drugiej strony utworzenie samodzielnej wtyczki oddziela funkcjonalność od motywu i sprawia, że działa ona niezależnie od używanego motywu. Wtyczki mają kompletną strukturę, która pozwala na lepszą organizację kodu, obsługę zależności, dostarczanie stron konfiguracji i ich niezależną aktualizację. Wtyczki są jedynym właściwym wyborem dla funkcji, które mają być ponownie wykorzystane, mają złożoną funkcjonalność lub muszą być dystrybuowane do użytku przez innych.