Od zera: Jak stworzyć swój pierwszy plugin dla WordPressa
Rozwoj dodatków (pluginów) dla WordPress jest kluczowym sposobem na rozszerzenie funkcjonalności tego systemu. Dzięki tworzeniu dodatków programiści mogą dodawać nowe funkcje do witryn internetowych, bez konieczności modyfikacji tematów lub podstawowych plików WordPress, co gwarantuje niezależność i portowalność tych funkcji. Standardowy dodatek składa się z jednego głównego pliku w języku PHP, opcjonalnych plików zasobów (np. CSS, JavaScript) oraz pakietów językowych. Zrozumienie podstawowej struktury dodatków to pierwszy krok na drodze do sukcesowego ich tworzenia.
Podstawa struktury i tworzenia pluginów dla WordPressa
Najprostszym formatem pluginu jest element, który jest umieszczony w określonym miejscu systemu./wp-content/plugins/folder znajdujący się w katalogu. W tym folderze musi znajdować się co najmniej jedna główna plik PHP, a w jej nagłówku umieszczone są komentarze, które służą do podania informacji o pluginie do WordPress.
Pisanie komentarzy w nagłówku pliku rozszerzenia
Każdy plik główny pluginu musi zaczynać się od określonego bloku komentarzy w języku PHP – to nazywane jest „headem pluginu”. WordPress używa tych informacji, by identyfikować i wyświetlać twoje pliki w liście pluginów w panelu administracyjnym. Standardowy blok komentarzy headu pluginu wygląda następująco:
Polecamy lekturę. Dokładny przegląd rozwoju pluginów dla WordPress: od zera do efektywnego dostosowywania。
<?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
*/ Wśród nichPlugin NameWypełnienie tych pola jest konieczne, natomiast pozostałe pola są opcjonalne. Aby jednak zwiększyć kompletność i profesjonalność pluginu, zaleca się wypełnić je jak najdokładniej.Text DomainWykorzystuje się do celów internacjonalizacji i stanowi podstawę dla tłumaczeń późniejszych dodatków (plug-inów).
Tworzenie głównego pliku i katalogu dla pluginu
Najpierw…/wp-content/plugins/Utwórz nowy folder w katalogu, na przykładmy-first-pluginNastępnie w tym folderze utwórz główny plik PHP, który zwykle ma taką samą nazwę jak folder.my-first-plugin.phpWpisz powyższe komentarze na początku pliku, zapisz go, a potem będziesz mogąć go zobaczyć i aktywować na stronie “Dodatki” w panelu administracyjnym WordPressa. Na tym etapie nie będzie mieć żadnych funkcji.
Podstawowe koncepty rozwoju oprogramowania: aktywnie działające „haki” (action hooks) i filtry (filters)
Architektura pluginów w WordPressu bazuje na systemie “haków” („hooks”), które stanowią most pomiędzy pluginami a core’em (podstawową częścią systemu WordPress). Haków można podzielić na dwie główne kategorie: aktywnych haków („action hooks”) i filtrów haków („filter hooks”).
Zrozumienie i użycie hooków akcji.
Aktywnie działające „haki” (ang. action hooks) umożliwiają wykonywanie własnego kodu PHP w określonych momencach czasu lub w momencie wystąpienia określonych zdarzeń. Możesz je wykorzystać do automatyzowania różnych procesów w twoim aplikacji.add_action()Funkcja umożliwia “przyczepienie” twojej funkcji do określonego „haka” (ang. hook). Na przykład może to być automatyczne dodawanie tekstu na końcu treści artykułu.
function myplugin_add_footer_text( $content ) {
if ( is_single() ) {
$content .= '<p>Dziękujemy za przeczytanie!</p>';
}
return $content;
}
add_filter( 'the_content', 'myplugin_add_footer_text' ); Uwaga: Ten przykład faktycznie wykorzystuje „hooki filtrów” do modyfikacji zawartości. Typowy przykład „hooka akcji” to dodawanie menu w panelu administracyjnym.
Polecamy lekturę. Naucz się tworzyć wtyczki do WordPressa od podstaw: stwórz swoją pierwszą niestandardową funkcję.。
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置',
'我的插件',
'manage_options',
'myplugin-settings',
'myplugin_settings_page'
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' ); Tutaj,add_action()„Zapisać funkcję” → „Write a function”myplugin_add_admin_menuPrzypiąć doadmin_menuTen „hook” akcyjny jest wykorzystywany przez WordPress podczas tworzenia menu w tle (w środowisku backend).
Zrozumienie i korzystanie z hooków filtrów
Filtry hooki są przeznaczone do modyfikacji danych generowanych przez WordPress w trakcie jego działania. Możesz je wykorzystać do realizacji różnych zadań, np. dodawania nowych informacji do obiektów, zmiany ich struktury czy wykonywania dodatkowych operacji.add_filter()Funkcja służy do „montowania” twojej własnej funkcji. Funkcja filtrująca przyjmuje dane wejściowe, zmienia je i musi zwrócić zmienione wartości. Na przykład: funkcja zmieniająca nagłówek artykułu.
function myplugin_modify_title( $title ) {
return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' ); Filtry są bardzo potężne i są często wykorzystywane do modyfikacji wyników wyszukiwania, treści tekstowej, wartości opcji oraz prawie wszystkich danych generowanych przez WordPress.
Dodać stronę ustawień i opcje dla pluginu
Dobrze zaprojektowany plugin musi oferować użytkownikom możliwość konfiguracji. WordPress dostarcza API do ustawień, które umożliwia bezpieczne i standardowe tworzenie stron z opcjami konfiguracji.
Tworzenie menu i stron zarządzania
Najpierw musisz użyć…add_menu_page()或add_options_page()Można użyć funkcji typu „add” lub innych podobnych, aby dodać stronę zarządzania. Zwykle tę operację przypisuje się do odpowiedniej części aplikacji (np. modułu obsługującego administrację).admin_menuNa haczkach, jak pokazano w poprzednim przykładzie. W tym przypadku…myplugin_settings_pageTo jest funkcja typu callback, która służy do renderowania zawartości HTML strony konfiguracji.
Użyj API Settings do rejestracji opcji.
API do ustawień umożliwia bezpieczny sposób rejestracji, weryfikacji i zapisu ustawień. Kluczowe kroki tego procesu obejmują:register_setting()Zarejestruj grupę ustawień za pomocąadd_settings_section()Dodaj blok z ustawieniami oraz zainstaluj ich używanie.add_settings_field()Dodaj konkretnych polów do ustawień.
Polecamy lekturę. Pełny przewodnik po rozwoju pluginów dla WordPressa: od podstaw po zaawansowane techniki i praktyczne poradы。
function myplugin_settings_init() {
// 注册一个设置
register_setting( 'myplugin_settings', 'myplugin_options' );
// 添加一个设置区块
add_settings_section(
'myplugin_section_general',
'通用设置',
'myplugin_section_general_cb',
'myplugin-settings'
);
// 添加一个设置字段
add_settings_field(
'myplugin_field_text',
'欢迎语',
'myplugin_field_text_cb',
'myplugin-settings',
'myplugin_section_general',
[ 'label_for' => 'myplugin_field_text' ]
);
}
add_action( 'admin_init', 'myplugin_settings_init' ); Następnie musisz napisać odpowiednią funkcję obsługiwaną przez wywołanie (callback function).myplugin_section_general_cb和myplugin_field_text_cbWygeneruj opis bloku oraz pola do wpisywania danych w formie HTML. Na koniec…myplugin_settings_pageW funkcji używa się…settings_fields()和do_settings_sections()Funkcja służy do wyświetlenia całego formularza.
Bezpieczeństwo wtyczek oraz najlepsze praktyki ich stosowania
Podczas tworzenia wtyczek bezpieczeństwo jest najważniejszym kryterium do uwzględnienia. Nieszczelna wtyczka może zagrozić cały serwis internetowy.
Weryfikacja danych, ich przygotowanie do dalszego wykorzystania oraz użycie specjalnych znaków („escape”)
Nigdy nie powinniśmy ufać danym wprowadzonym przez użytkowników ani danym pochodzącym z bazy danych. Podczas obsługi jakiegoś wprowadzania (np. $_POST, $_GET) konieczne jest ich sprawdzenie i przygotowanie do dalszego wykorzystania. WordPress oferuje wiele funkcji, które pomagają w tym procesie.sanitize_text_field(), intval(), wp_kses()Itp. Podczas wyświetlania danych w formacie HTML lub JavaScript konieczne jest ich escapeowanie, a do tego służą funkcje takie jak…esc_html(), esc_attr(), esc_js()和wp_json_encode()。
// 接收、清理并保存数据
$user_input = sanitize_text_field( $_POST['my_field'] );
update_option( 'my_option', $user_input );
// 安全地输出数据
echo esc_html( get_option( 'my_option' ) ); Używanie nie-Ce elementów oraz kontroli upoważnień
Dla wszystkich wysyłanych z pluginów żądań formularzy w tle lub żądań AJAX należy używać mechanizmu „nonce” w WordPress, aby sprawdzić legalność i unikalność tych żądań, zapobiegając atakom typu „cross-site request forgery”.current_user_can()Funkcja sprawdza, czy aktualny użytkownik posiada uprawnienia niezbędne do wykonywania danej operacji.
// 在表单中输出 nonce 字段
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );
// 在处理请求时验证 nonce 和权限
function myplugin_handle_form_submit() {
if ( ! isset( $_POST['myplugin_nonce'] ) ||
! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ||
! current_user_can( 'manage_options' ) ) {
wp_die( '安全校验失败。' );
}
// ... 安全地处理数据 ...
} Podsumowanie.
Rozwoj pluginów dla WordPressu to proces wymagający systematycznego podejścia. Zaczyna się od zrozumienia podstawowej struktury platformy oraz mechanizmów hooków, potem przechodzi do implementacji funkcji i tworzenia interfejsów użytkownika, a na koniec należy stosować surowe zasady bezpieczeństwa. Poprzez stosowanie standardów programowania WordPressa oraz wykorzystanie dostępnych API, programiści mogą tworzyć mocne, bezpieczne i łatwe w utrzymaniu pluginy. Kluczowym elementem jest bezproblemowe włączenie własnych funkcji do życiowego cyklu WordPressa za pomocą hooków typu „akcje” (actions) i „filtrzy” (filters), a także zarządzanie konfiguracjami za pomocą API Settings. Należy zawsze mieć na oku procedury walidacji danych, ich czyszczenia, escapeowania oraz sprawdzania uprawień użytkowników.
FAQ – najczęściej zadawane pytania.
### – Jak debugować moje WordPressowe wtyczki?
Pierwszym krokiem jest włączenie trybu debugowania w WordPress.wp-config.phpW dokumencie zostanie przedstawionyWP_DEBUGKonstanta ustawiona jest na…trueTo będzie wyświetlać błędy, ostrzeżenia i powiadomienia PHP bezpośrednio na stronie. Do bardziej złożonego debugowania można użyć innych narzędzi.error_log()Funkcja zapisuje informacje do loga błędów na serwerze lub wykorzystuje specjalne narzędzia do debugowania, aby uzyskać szczegóły dotyczące zapytań, hooków itp.
Jak moja wtyczka może obsługiwać kilka języków?
WordPress wykorzystuje framework GNU gettext do realizacji funkcji internacionalizacji. Najpierw należy to określić w komentarzach na początku pliku zawierającego moduł (plugin).Text DomainW kodzie pluginu należy używać specjalnych zmiennych lub konstrukcji, aby wszystkie teksty wymagające tłumaczenia zostały uwzględnione podczas procesu tłumaczenia.__()Proces tłumaczenia został zrealizowany z użyciem odpowiednich narzędzi i metod._e()Przetłumacz tekst i wyświetl go bezpośrednio. Następnie, używając narzędzia takiego jak Poedit, wydziel strony z kodu źródłowego pluginu i wygeneruj z nich wymagane teksty..potPliki szablonów; dla każdego języka należy stworzyć odpowiedni plik szablonu..poI po skompilowaniu..moPlik należy umieścić w pluginie./languages/W katalogu.
Jak uniknąć konfliktów pomiędzy nazwami klas w różnych wtyczkach (plug-inach)?
Aby uniknąć konfliktów nazw klas, funkcji lub stałych, najlepszą praktyką jest używanie przestrzeni nazw (namespace) lub dodawanie unikalnych prefiksów do wszystkich identyfikatorów. Od wersji PHP 5.3 zaleca się stosowanie przestrzeni nazw. Na przykład:namespace MyPluginAdmin;Jeśli uwzględnimy kompatybilność, konieczne jest użycie prefiksu, który musi być wystarczająco unikalny. Na przykład można skorzystać z kombinacji skrótów nazwy firmy i nazwy pluginu:function acme_myplugin_init() {}Nazwa klasy jest definiowana jako…class Acme_MyPlugin_Admin_Settings {}。
Jak dodać do mojego pluginu tabelę bazy danych dostosowaną do moich potrzeb?
Najlepszym momentem na tworzenie tabeli dostosowanej jest w momencie aktywacji wtyczki. Możesz umieścić kod potrzebny do tworzenia tabeli w funkcji i wykorzystać ją w odpowiednim miejscu w kodzie.register_activation_hook()Funkcja służy do rejestracji. Wewnątrz tej funkcji należy użyć odpowiednich instrukcji.dbDelta()Funkcja służy do bezpiecznego tworzenia lub aktualizowania struktury tabeli i wymaga użycia bardzo specyficznego formatu SQL. Koniecznie jej używaj.$wpdb->prefixDodaj prefiks witryny do nazw tabeli, aby uzyskać wsparcie dla środowiska z kilkoma witrynami.
Następny krok, co dalej?
Dalsze lektury i praktyczna wiedza.
Poniższe treści są powiązane z tematem tego artykułu i warto je przeczytać. Zwykle lepiej zacząć od artykułu, który najbardziej odpowiada aktualnemu problemowi, a potem stopniowo przechodzić do tematów pokrewnych.
- Jak wybrać i dostosować temat WordPress, który idealnie pasuje do twoich potrzeb?
- Przewodnik po tworzeniu pluginów dla WordPress: jak stworzyć swój pierwszy własny plugin od zera
- Jak stać się deweloperem pluginów dla WordPressa: pełny przewodnik od zera do jednego
- Od zera do jednego: Pełny przewodnik i praktyczne poradы na budowę profesjonalnych stron internetowych za pomocą WordPressa
- Pełny przewodnik po rozwoju pluginów dla WordPressa: od poznania podstaw do osiągnięcia biegłości w tworzeniu profesjonalnych rozszerzeń