Zaczynamy od zera: podstawy tworzenia wtyczek do WordPressa
Aby stworzyć plugin dla WordPress, należy najpierw zrozumieć jego podstawową strukturę. Najważniejszym plikiem w pluginie jest plik główny, który zwykle nosi nazwę identyczną z nazwą samego pluginu.my-first-plugin.phpTen plik zawiera nie tylko cały kod funkcjonalny pluginu, ale co jest jeszcze ważniejsze, to komentarze umieszczone na początku pliku, zawierające informacje o samym pluginie. Te komentarze są kluczowe dla WordPress, aby rozpoznać, o jakim pluginie mowa.
Komentarze umieszczone w nagłówku pliku rozszerzenia (plugin) muszą zawierać określone metadane. Poniżej jest przykład najprostszego możliwego przypadku:
<?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
*/ Utworzyłem ten plik i umieściłem go w odpowiednim miejscu./wp-content/plugins/Po utworzeniu katalogu można go zobaczyć na stronie “Dodatki” w panelu administracyjnym WordPressa i aktywować lub dezaktywować według potrzeb. Następnie istotne jest zrozumienie kolejności ładowania i wykonywania kodu dodatków. WordPress ładowa dodatki w porządku alfabetycznym./wp-content/plugins/W katalogu znajdują się wszystkie ważne pliki głównych modułów. Dlatego, jeśli twój moduł wymaga funkcji innych modułów, nie możesz założyć, że te moduły zostały już załadowane. W takim przypadku konieczne jest ich ręczne uruchomienie.plugins_loadedTen „hook” akcji zapewnia, że kod zostanie wykonywany w właściwym momencie.
Polecamy lekturę. Pełny przewodnik po rozwoju pluginów dla WordPressa: od zera do stworzenia rozszerzeń na poziomie komercyjnym。
Głębokie zrozumienie mechanizmu „hooków”: działanie akcji i filtrów
Podstawa filozofii rozwoju pluginów dla WordPress jest “hooki” (ang. Hooks). Hooki umożliwiają wstawianie swojego kodu w proces wykonywania core’u WordPress, tematów (templates) lub innych pluginów, bez konieczności modyfikacji oryginalnych plików. Hooki są głównie podzielone na dwa typy: hooki akcji (Action Hooks) i hooki filtrów (Filter Hooks).
Aktywnie działające „haki” (ang. action hooks) umożliwiają wykonywanie własnych funkcji w momencie wystąpienia określonych zdarzeń. Na przykład, gdy artykuł zostanie opublikowany…publish_postGdy zasoby są ładowane w nagłówku strony internetowej…wp_enqueue_scripts) albo podczas inicjalizacji w panelu administracyjnym (admin_initAby użyć hooka akcji, musisz użyćadd_action()Funkcja “przypisuje” twoją funkcję obsługiwaną przez callback do odpowiedniego „haka” (hooka).
add_action( 'init', 'myplugin_custom_init' );
function myplugin_custom_init() {
// 在WordPress初始化时执行
// 例如,注册一个自定义文章类型
} Filtry typu „hook” służą do modyfikacji danych. Pozwalają na przesłuchiwanie i edycję zmiennych przekazywanych do nich, a potem na ich powrót. Na przykład, można zmienić treść artykułu.the_contentMożna zmienić długość wydrukowanego fragmentu tekstu.excerpt_length) lub modyfikacji wyników wyszukiwania (the_postsAby użyć filtrów, konieczne jest wywołanie odpowiedniej funkcji.add_filter()Funkcja.
add_filter( 'the_title', 'myplugin_custom_title' );
function myplugin_custom_title( $title ) {
// 修改文章标题
return '前缀:' . $title;
} Tworzenie własnych hooków
Poza setkami włączonych hooków dostępnych w WordPress, rozwijacze zaawansowanych pluginów mogą tworzyć własne hooki, które mogą być wykorzystane przez innych programistów do rozszerzania funkcjonalności aplikacji.do_action()Aby stworzyć hook akcji, użyj…apply_filters()Aby stworzyć hooka filtru…
// 在插件代码中定义一个自定义动作钩子
do_action( 'myplugin_after_something_happens', $some_data );
// 在插件代码中定义一个自定义过滤器钩子
$value = apply_filters( 'myplugin_filter_some_value', $default_value ); Tworzenie funkcji wtyczek: bezpieczeństwo i najlepsze praktyki
Podczas tworzenia funkcji wtyczek bezpieczeństwo jest najważniejszym kryterium do uwzględnienia. Nigdy nie możesz ufać wprowadzonym przez użytkownika danym. Wszystkie dane pochodzące z zewnętrznych źródeł (np. formularzy, parametry URL, pliki cookie) muszą zostać sprawdzone, oczyszczone i poddane procesowi escape.
Polecamy lekturę. Przewodnik po rozwoju pluginów dla WordPress: od zera do mistrzostwa w tworzeniu własnych funkcji。
Weryfikacja danych i escape
Dla wprowadzanych danych używaj…sanitize_text_field()、sanitize_email()、intval()Należy wyczyścić funkcje. W przypadku danych wyświetlanych na stronie HTML należy użyć <esc_html()、esc_attr()或wp_kses_post()Wykonaj escape, aby zapobiec atakom typu XSS (Cross-Site Scripting).
$user_input = $_POST['some_field'];
$clean_input = sanitize_text_field( $user_input );
// 输出时
echo '<div class="' . esc_attr( $class_name ) . '">'`. esc_html($clean_input)`.'</div>'; Interakcja z bazą danych
WordPress oferuje…$wpdbObiekty globalne są używane do bezpośrednich operacji na bazie danych, ale należy preferować wewnętrzne funkcje WordPress, jeśli to jest możliwe.get_post()、update_option()Itp. Jeśli konieczne jest użycie SQL, upewnij się, że to robisz zgodnie z zasadami bezpieczeństwa i standardami programowania.$wpdb->prepare()Metody zapobiegania atakom typu SQL injection.
global $wpdb;
$user_id = intval( $_GET['id'] );
$results = $wpdb->get_results(
$wpdb->prepare( "SELECT * FROM {$wpdb->prefix}my_table WHERE user_id = %d", $user_id )
); Dodaj menu i strony zarządzania.
Stworzenie strony konfiguracji dla wtyczki to często występujący wymóg. Możesz to zrobić za pomocą różnych narzędzi i metod.add_menu_page()或add_options_page()Następnie funkcje dodają elementy menu w tle. Funkcje te powinny być wywoływane w następujący sposób:admin_menuWywołane w zaczepie akcji.
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'myplugin-slug', // 菜单别名
'myplugin_settings_page' // 用于呈现页面的回调函数
);
}
function myplugin_settings_page() {
// 输出设置页面HTML
echo '<div class="wrap"><h1>Ustawienia</h1></div>';
} Przygotowanie do publikacji wtyczki: internacjonalizacja i organizacja kodu
Gdy funkcje dodatku zostaną doprowadzone do perfekcji, aby dotrzeć do szerszej grupy użytkowników i ułatwić jego konserwację, konieczne będzie zwrócić uwagę na aspekty internacjonalizacji oraz organizacji kodu.
Implementacja internacionalizacji wtyczek
Internacjonalizacja (ang. i18n) umożliwia tłumaczenie twojego pluginu na inne języki. Do tego potrzebny jest dostęp do funkcji tłumaczeniowych dostępnych w WordPress.__()、_e()、_x()Zbierz wszystkie teksty widzialne dla użytkowników i ujawnij je w nagłówku pliku rozszerzenia.Text Domain(Na przykład)my-first-plugin)。
// 在代码中
$greeting = __( 'Hello, World!', 'my-first-plugin' );
_e( 'This text will be echoed and translatable.', 'my-first-plugin' );
// 然后,使用如Poedit等工具生成 .pot 翻译模板文件。 Modularna organizacja kodu
Unikaj skupiania całego kodu w jednym głównym pliku. Dobrą praktyką jest rozdzielanie kodu realizującego różne funkcje na kilka osobnych plików..phpZnajdują się w pliku, a ten plik zawiera je jako elementy. Na przykład:
- includes/admin/ Katalog zawiera kod związany z obsługą backendu.
- includes/public/ Katalog zawiera kod dotyczący frontendu.
- includes/class-*.php Zawiera definicje głównych klas.
- assets/css/ 和 assets/js/ Miejsce na przechowywanie plików z definicjami stylów (style sheets) i skryptów.
Polecamy lekturę. Święty tekst dla programistów tworzących dodatki do WordPressa: kluczowe techniki budowania własnych funkcji od zera。
Używanie programowania obiektowego umożliwia lepszą organizację kodu, unikanie konfliktów nazw funkcji oraz zwiększenie powtarzalności kodu. Definiuj kluczową klasę (main class) i w jej konstruktorze zainstaluj wszystkie niezbędne elementy („hooki”).
class My_First_Plugin {
public function __construct() {
add_action( 'init', array( $this, 'init_method' ) );
add_filter( 'the_content', array( $this, 'filter_content' ) );
}
public function init_method() {
// 初始化
}
public function filter_content( $content ) {
return $content . '<p>Dodatkowy kontent do wtyczki</p>';
}
}
new My_First_Plugin(); Podsumowanie.
Rozwoj pluginów dla WordPress polega na bezproblemowym integrowaniu własnych funkcji do ekosystemu WordPress. Całość procesu rozpoczyna się od standardowego pliku z komentarzami umieszczonego na początku pluginu. Kluczowym elementem rozwoju jest biegłe korzystanie z „hooków akcji” (action hooks) i „hooków filtrów” (filter hooks), aby w sposób zależny od wydarzeń rozszerzać lub modyfikować zachowanie WordPress. Podczas programowania bezpieczeństwo musi być na pierwszym miejscu – dane należy dokładnie sprawdzać, czystić i escape’ować. Im większą funkcjonalność ma plugin, tym ważniejsze są dobrze zorganizowany kod (w tym projektowanie obiektowe i modułowa struktura plików) oraz wsparcie dla różnych języków, aby ułatwić utrzymanie pluginu, zwiększyć jego profesjonalność i zasięg użytkowników. Dzięki stosowaniu tych najlepszych praktyk będzie można stworzyć silny, bezpieczny i łatwy w dystrybucji plugin dla WordPress.
FAQ – najczęściej zadawane pytania.
Jakie są podstawowe wymagania, by rozwijać dodatki (plugi) do WordPress?
Musisz opanować podstawy języka PHP, ponieważ WordPress oraz jego pluginy są pisane w tym języku. Ponadto konieczna jest podstawowa znajomość HTML, CSS i JavaScriptu, aby móc pracować z wyglądem i interakcją na stronie internetowej. Najważniejsze jest zrozumienie podstawowego funkcjonowania WordPressa oraz jego systemu hooków (hooków), który stanowi kluczową część rozwoju pluginów.
Jak uniknąć konfliktów pomiędzy nazwami funkcji mojego pluginu a nazwami funkcji innych pluginów?
Najlepszą praktyką jest stosowanie programowania obiektowego (OOP), w którym funkcje są umieszczone w klasach, a nazwy metod w tych klasach są niezależne od siebie. Jeśli używasz programowania proceduralnego, konieczne jest dodanie unikalnego prefiksu do wszystkich funkcji, klas i stałych. Ten prefiks może być skróceniem nazwy twojego pluginu lub nazwy twojej marki.myplugin_或acme_I upewnij się, że ta zasada jest stosowana we wszystkim kodzie.
Gdzie powinienem zainstalować pliki JavaScript i CSS zawierające elementy dodatkowe (pluginy)?
Aby zapewnić poprawność i wydajność, nigdy nie umieszczaj bezpośrednich linków do plików zasobów w szablonach HTML. Zamiast tego należy używać funkcji „enqueue” dostępnej w WordPress. Jeśli chodzi o zasoby front-end, stosuj odpowiednie metody obsługi tych plików.wp_enqueue_script()和wp_enqueue_style()I umontuj to na…wp_enqueue_scriptsAkcje są przypisane do odpowiednich „haków” (hooków). Zasoby, które są używane wyłącznie w interfejsie administracyjnym w tle (background management interface), są montowane (mounted) w odpowiednim miejscu.admin_enqueue_scriptsNa haczu.
Jak plugi (plug-ins) mogą przechowywać swoje ustawienia i dane?
Dla ustawiania prostych wartości pojedynczych można użyć API opcji WordPress.add_option()、get_option()和update_option()Funkcje. W przypadku bardziej złożonych, strukturalizowanych danych (np. listy elementów formularza) należy stworzyć własne tabele w bazie danych. Można to zrobić za pomocą odpowiednich narzędzi i procedur programistycznych.dbDelta()Funkcja jest aktywowana w momencie włączenia pluginu (poprzez…).register_activation_hookUtworzyć lub aktualizować strukturę tabeli w bezpieczny sposób.
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