Przygotowanie środowiska do rozwoju wtyczek dla WordPress
Przed rozpoczęciem pisania kodu istotne jest posiadanie odpowiedniego środowiska rozwoju. To nie tylko umożliwi ci efektywną pracę, ale także umożliwi symulację rzeczywistego środowiska produkcyjnego, co zapobiega problemom wynikającym z nieszczęśliwych zbiegów okoliczności pomiędzy lokalnym a online środowiskiem. Standardowe środowisko rozwoju powinno zawierać lokalne środowisko serwera, edytor kodu oraz narzędzia do debugowania.
Najpierw potrzebujesz lokalnego środowiska serwerowego, w którym będzie można uruchomić WordPress. Zaleca się używać pakietów środowiskowych, takich jak Laragon, XAMPP lub Local by Flywheel. Te narzędzia umożliwiają jednorazową instalację Apache/Nginx, PHP i MySQL, eliminując konieczność skomplikowanych procedur konfiguracji. Upewnij się, że twoja wersja PHP jest kompatybilna z aktualną wersją WordPress – zwykle zaleca się PHP 7.4 lub wyższe. Ponadto, w panelu administracyjnym WordPress (“Tools” → “Site Health”), sprawdź, czy nie występują żadne poważne problemy, które mogłyby utrudnić rozwój dodatków (pluginów).
Następnie należy wybrać mocny edytor kodu. Visual Studio Code jest obecnie bardzo popularnym wyborem – jest lekkim, darmowym i oferuje wiele rozszerzeń, np. PHP Intelephense (dostawające inteligentne sugestie dotyczące kodu) oraz WordPress Snippet (zbiór gotowych fragmentów kodu). Kolejnym klasycznym wyborem jest PhpStorm, który oferuje bardziej dogłębną integrację z procesem rozwoju aplikacji na platformie WordPress, ale jest to program płatny.
Polecamy lekturę. Od zera do jednego: Pełny przewodnik po tworzeniu pluginów dla WordPressa oraz najlepsze praktyki。
Na koniec, włączenie trybu debugowania jest niezbędnym krokiem w procesie rozwoju. To można zrobić poprzez modyfikację plików znajdujących się w katalogu głównym WordPress.wp-config.phpMożesz włączyć szczegółowy raport błędów, co jest niezbyt istotne dla wykrywania i naprawiania problemów w kodzie. Znajdź plik, w którym są definiowane…WP_DEBUGW miejscu, gdzie znajdują się konstanty, można dodać następujący kod:
// 启用 WordPress 调试模式
define( 'WP_DEBUG', true );
// 将错误记录到 /wp-content/debug.log 文件
define( 'WP_DEBUG_LOG', true );
// 在页面上显示错误(开发环境推荐,生产环境必须关闭)
define( 'WP_DEBUG_DISPLAY', true ); Stworz swoj pierwszy plik z rozszerzeniem (plugin).
WordPress plugin może być na tyle prosty, że składa się z tylko jednego pliku. Wszystkie pluginy muszą być umieszczone w określonym miejscu w strukturze witryny WordPress./wp-content/plugins/Każdy plugin może mieć swoją własną podkatalogów, co pomaga w organizacji bardziej złożonej struktury kodu.
Uwagi do nagłówka pliku z rozszerzeniem
Każdy plik główny pluginu musi zaczynać się od standardowych komentarzy typu „header” w języku PHP – to sposób, jak WordPress rozpoznaje informacje o pluginie. Stwórz nowy plik i nazwij go…my-first-plugin.phpI włożyć/wp-content/plugins/my-first-plugin/W folderze znajdują się następujące pliki:
<?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
* Domain Path: /languages
*/ Ten komentarz zawiera wszystkie metadane dotyczące pluginu, które są wyświetlone na stronie “Pluginy” w panelu administracyjnym WordPress.Text Domain和Domain PathPrzygotowanie plików do lokalizacji (i18n) w celu ich używania w pluginach.
Implementowanie prostej funkcji
Teraz dodajmy do tego pluginu prostą funkcję: automatyczne dodawanie linii tekstu dostosowanego na końcu treści artykułu. Będziemy korzystać z możliwości dostępnych w WordPress.the_contentFiltry hooki. To te elementy, które właśnie tworzyłeś.my-first-plugin.phpPoniżej komentarza umieszczonego w nagłówku pliku dodaj następującą funkcję:
Polecamy lekturę. Opanowanie rozwoju pluginów dla WordPress: budowanie własnych funkcji od zera。
// 在文章内容末尾添加自定义文本
function my_first_plugin_add_footer_text( $content ) {
// 确保只在主循环的单篇文章页面执行
if ( is_single() && in_the_loop() && is_main_query() ) {
$footer_text = '<p><em>Dziękujemy za czytanie! Ten tekst został przygotowany dla Ciebie przez “Moje pierwsze dodatki” („My First Plugins”).</em></p>';
$content .= $footer_text;
}
return $content;
}
add_filter( 'the_content', 'my_first_plugin_add_footer_text' ); Po zapisaniu pliku loguj się do panelu administracyjnego WordPress, wejdź na stronę “Dodatki” (Plugins) i powinien pojawić się dodatek o nazwie “Moje pierwsze dodatko” (My First Plugin). Aktywuj go, a potem odwiedź jakąś artykulikę na blogu – tekst, który ustawiliśmy, powinien zostać dodany na dno artykułu.
Używanie API serca WordPress
Podczas dalszego rozwoju aplikacji często interagujesz z różnymi API dostępnych w WordPress. Najważniejszym z nich jest system “hooków” (Hooks), który składa się z “działań” (Actions) i “filtrów” (Filters).
Zrozumienie hooków akcji
Aktywnie działające „haki” (ang. action hooks) umożliwiają wykonywanie własnego kodu w określonych momencach. Na przykład, gdy zostanie opublikowany artykuł, chcesz wysłać wiadomość e-mail z powiadomieniem. W takiej sytuacji można z nich skorzystać.publish_postPoniższy przykład pokazuje, jak tworzyć funkcję, która umożliwia zapisywanie informacji do loga błędów w momencie opublikowania artykułu:
// 定义文章发布时执行的动作函数
function my_first_plugin_log_post_published( $post_id, $post ) {
// 避免无限循环和非文章类型
if ( wp_is_post_revision( $post_id ) || $post->post_type != ‘post’ ) {
return;
}
// 记录日志
error_log( “文章 ID {$post_id} 已发布,标题为:{$post->post_title}” );
}
// 将函数挂载到 publish_post 动作钩子上
add_action( ‘publish_post’, ‘my_first_plugin_log_post_published’, 10, 2 ); funkcjaadd_actionTrzeci parametr to priorytet (domyślnie 10); im mniejsza liczba, tym wyższy priorytet; czwarty parametr to liczba argumentów, które funkcja przyjmuje.
Zrozumienie mechanizmu działania „filter hooks” (hooków filtrów)
Filtry hooki są używane do modyfikacji danych. W rozdziale “Tworzenie twojego pierwszego pliku rozszerzenia” wykorzystaliśmy je właśnie w tym celu.the_contentTo po prostu „hook” filtru – przyjmuje oryginalny tekst i umożliwia jego modyfikację, po czym tekst jest powracany w zmienionym formacie. Innym często używanym przykładem jest modyfikacja długości opisu artykułu.
// 修改摘要的默认字数
function my_first_plugin_custom_excerpt_length( $length ) {
return 30; // 将摘要字数改为30字
}
add_filter( ‘excerpt_length’, ‘my_first_plugin_custom_excerpt_length’ ); Dodaj menu wejściowe.
Aby interagować z użytkownikami, często konieczne jest dodanie strony menu do bocznego menu panelu administracyjnego w WordPress. Można to zrobić w następujący sposób:add_menu_pageImplementacja funkcji. Niżej podane kod dodał stronę z ustawieniami najwyższego poziomu do pluginu:
Polecamy lekturę. Kompletny przewodnik po tworzeniu wtyczek WordPress: od zera do wysokiej jakości rozszerzeń WordPress.。
// 创建插件管理菜单
function my_first_plugin_add_admin_menu() {
add_menu_page(
‘我的第一个插件设置’, // 页面标题
‘我的插件’, // 菜单标题
‘manage_options’, // 所需权限
‘my-first-plugin’, // 菜单slug
‘my_first_plugin_settings_page’, // 回调函数,用于输出页面内容
‘dashicons-admin-plugins’, // 图标(可选)
100 // 菜单位置(可选)
);
}
add_action( ‘admin_menu’, ‘my_first_plugin_add_admin_menu’ );
// 设置页面的回调函数
function my_first_plugin_settings_page() {
?>
<div class="“wrap”">
<h1>Moje pierwsze ustawienia dla pluginu</h1>
<p>To jest strona ustawień pluginu. W przyszłości możesz tu dodawać formularze i opcje.</p>
</div>
<?php
} Bezpieczeństwo wtyczek oraz najlepsze praktyki ich stosowania
Podczas tworzenia pluginów do użytkowania przez innych nie można ignorować aspektów bezpieczeństwa i jakości kodu. Posłuchanie najlepszych praktyk pomaga chronić witryny internetowe przed atakami, a także zapewnia kompatybilność i łatwość konserwacji pluginów.
Weryfikacja danych i escape
Nigdy nie ufajdanie danych wprowadzonych przez użytkowników ani danych pochodzących z bazy danych. Przed wyświetleniem ich w przeglądarcu należy je uwzględnić („ujawnić” specjalne znaki, które mogą mieć znaczenie w kontekście programowania); przed zapisem do bazy danych konieczne jest ich sprawdzenie i przygotowanie (usunięcie niepotrzebnych elementów). WordPress oferuje wiele funkcji pomocniczych do tego celu.
- Użyj escape output.
esc_html()、esc_attr()、esc_url()和wp_kses_post()Funkcje takie jak escape() umożliwiają escapeowanie danych w zależności od kontekstu. - Sprawdź wprowadzone dane: użyj…
sanitize_text_field()、sanitize_email()、intval()Funkcje takie jak „clean” są używane do przygotowania danych z formularzy wysłanych przez użytkowników.
Na przykład, przy ustawianiu obsługi danych z formularza na stronie:
$user_input = $_POST[‘some_field’] ?? ‘’; // 使用空合并运算符提供默认值
$clean_input = sanitize_text_field( $user_input ); // 清理数据
update_option( ‘my_plugin_option’, $clean_input ); // 安全存储 Używanie metod innych niż te bazujące na kontroli uprawnień („CE”)
Podczas obsługi żądań formularzy (zwłaszcza tych wysyłanych z plików admin-ajax.php lub admin-post.php) konieczne jest używanie określonych procedur lub zasad.wp_verify_nonce()Służy do sprawdzenia legalności żądania w celu zapobiegania atakom typu CSRF (Cross-Site Request Forgery). Ponadto jest wykorzystywany do…current_user_can()Sprawdź, czy aktualny użytkownik posiada uprawnienia do wykonywania tej operacji.
function my_first_plugin_handle_form_submit() {
// 1. 检查nonce
if ( ! isset( $_POST[‘my_nonce_field’] ) || ! wp_verify_nonce( $_POST[‘my_nonce_field’], ‘my_action’ ) ) {
wp_die( ‘安全校验失败!’ );
}
// 2. 检查权限
if ( ! current_user_can( ‘manage_options’ ) ) {
wp_die( ‘权限不足!’ );
}
// 3. 安全地处理数据…
} Organizacja kodu i internacionalizacja
Dla złożonych pluginów zaleca się używać programowania obiektowego (OOP) do organizacji kodu, rozdzielając funkcje na moduły w postaci klas. To poprawia czytelność i powtarzalność kodu.
Równocześnie od początku trzeba przygotować plugin do obsługi różnych języków. To oznacza, że wszystkie teksty skierowane do użytkowników muszą być tworzone z użyciem funkcji tłumaczeniowych dostępnych w WordPress.__()、_e()Przeprowadź opakowanie produktu. Patrząc na komentarze umieszczone na początku pliku z dodatkiem, już określiliśmy wszystkie niezbędne parametry.Text DomainW kodzie należy to używać w następujący sposób:
$message = __( ‘感谢阅读!本文由“我的第一个插件”为您呈现。’, ‘my-first-plugin’ ); Następnie możesz użyć narzędzia takiego jak Poedit do tworzenia….potPliki szablonowe, które umożliwiają tłumaczom generowanie tekstów w różnych językach..moDokumenty.
Podsumowanie.
Dzięki temu przewodnikowi udało ci się przebyć cały proces tworzenia pluginu dla WordPressa od zera. Nauczyłeś się, jak skonfigurować środowisko rozwoju, tworzyć pliki pluginów zawierające standardowe komentarze na początku, a także jak wykorzystywać potężny system hooków oraz akcji w WordPressie do dodawania nowych funkcji. Rozmawialiśmy również o bezpiecznym dodawaniu menu administracyjnego, obsłudze danych oraz o znaczeniu bezpieczeństwa i internationalizacji. Rozwoj pluginów to proces ciągłego uczenia się i praktyki; kluczowym elementem jest zrozumienie mechanizmów hooków w WordPressie oraz zasad bezpieczeństwa. Teraz możesz spróbować stworzyć bardziej złożone funkcje, np. tworzenie własnych tabel w bazie danych, dodawanie shortcode’ów, widgetów lub punktów końcowych API typu REST, aby stopniowo budować funkcjonalny i wytrzymały plugin na poziomie komercyjnym.
FAQ – najczęściej zadawane pytania.
Czy musi plik rozszerzalny (plugin) znajdować się w osobnej folderze?
Nie, plugin może być po prostu czymś oddzielnym..phpPlik można po prostu umieścić w odpowiednim miejscu./wp-content/plugins/Pliki znajdują się w katalogu. Jednak w przypadku wszystkich pluginów, które zawierają kilka plików, zasobów (np. JS, CSS) lub wymagają tłumaczenia, zdecydowanie zaleca się używać osobnego foldera do przechowywania wszystkich powiązanych plików. To ułatwia utrzymanie jasnej struktury projektu i ułatwia jego zarządzanie.
Jak zapisać ustawienia mojego pluginu do bazy danych?
WordPress oferuje bardzo wygodną API do obsługi opcji. Możesz ją używać do realizacji różnych zadań.add_option()、get_option()和update_option()Funkcje służą do dodawania, pobierania i aktualizowania ustawień pluginów. Te dane są bezpiecznie przechowywane w WordPress.wp_optionsW tabelach baz danych, w przypadku dużych ilości strukturalizowanych danych, można zastanowić się nad ich serializacją w postaci arrayów lub stringów w formacie JSON, a następnie ich zapisem.
Czy moje stworzone wtyczki mogą powodować konflikty z innymi wtyczkami?
Możliwe, szczególnie jeśli plugin wykorzystuje standardowe „haki” (hooki), nazwy funkcji lub klas. Aby uniknąć konfliktów, zaleca się stosować następujące najlepsze praktyki: dodawać unikalne prefiksy do wszystkich funkcji, klas i zmiennych (na przykład używając skrótów lub nazw pluginów); używać „slugów” pluginów jako przestrzeni nazw (możliwe od wersji PHP 5.3); oraz wybierać odpowiedni priorytet przy używaniu „haków”, aby upewnić się, że kolejność wykonywania zadań będzie zgodna z oczekiwaniami.
Jakich wersji WordPress musi być kompatybilny ten dodatek?
Zależy to od twoich celowych użytkowników. Zwykle zaleca się, aby plugin był kompatybilny z aktualną najpopularniejszą wersją programu, a także z jedną lub dwoma wcześniejszymi wersjami. Możesz to ustalić w dokumentacji lub instrukcjach dołączonych do pluginu.readme.txtW pliku jest to uwzględnione.Requires at least:W polu należy określić minimalną wymaganą wersję WordPress. Podczas rozwoju należy unikać używania funkcji dostępnych tylko w nowszych wersjach WordPress.function_exists()Wykonujemy testy zgodności, aby rozszerzyć zakres zastosowania tego pluginu.
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.
- 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
- Pełny przewodnik po rozwoju pluginów dla WordPressa: od poznania podstaw do osiągnięcia biegłości w tworzeniu profesjonalnych rozszerzeń
- Rozwój pluginów dla WordPress: od poznania podstaw do osiągnięcia biegłości – stworzenie twojego pierwszego własnego pluginu
- Od zera do jednego: pełny przewodnik po stopniowym tworzeniu twojego pierwszego dodatku dla WordPress