Podstawowa struktura i zasady działania pluginów w WordPressie
Aby stworzyć plugin dla WordPress, należy najpierw zrozumieć jego podstawową strukturę oraz sposób działania w ramach life cycle’a WordPress. Plugin to w istocie jeden lub kilka plików w formacie PHP, które wykorzystują bogatą ofertę API (Application Programming Interface) dostępnych w WordPress, aby rozszerzyć lub zmienić funkcje witryny internetowej.
Podstawą każdego pluginu jest informacja umieszczone na początku pliku pluginu (tzw. „header”). Ta informacja jest pisana w specjalnym formacie komentarzy PHP i służy do podania WordPressowi takich danych jak nazwa pluginu, opis, wersja, autor oraz inne metadane. Na przykład, plugin o nazwie „MyPlugin” może zawierać następujący kod w sekcji header: my-first-plugin.php Plik może zaczynać się od następujących informacji:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习插件开发的简单示例。
* Version: 1.0.0
* Author: 开发者姓名
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ WordPress interaguje z wtyczkami (plug-ins) za pomocą mechanizmu zwanego “hooki”. Hooki dzielą się na dwa typy: akcje (Actions) i filtry (Filters). Hooki typu akcja umożliwiają wstawienie swojego kodu w określonych momencach wykonywania WordPressa – na przykład po opublikowaniu artykułu lub podczas ładowania stylów w nagłówku strony. Hooki typu filtr umożliwiają modyfikację danych generowanych przez WordPress podczas jego działania – na przykład zmianę treści artykułu lub długości jego opisu. Zrozumienie i skuteczne wykorzystanie hooków jest kluczowym elementem przy efektywnym tworzeniu wtyczek.
Polecamy lekturę. W prosty i zrozumiały sposób: kompletny przewodnik po tworzeniu wtyczek WordPressa od podstaw.。
Zrozumienie struktury plików rozszerzeń (plug-inów)
Prosty plugin może mieć tylko jedno główne plików. Jednak wraz z rozszerzaniem funkcji staje się kluczową kwestią rozsądna struktura organizacji plików. Zwykle katalog pluginu zawierający pełną funkcjonalność składa się z pliku głównego pluginu (np. my-plugin.php…) służy do zawierania funkcji i klas. includes folder, przeznaczony do przechowywania zasobów front-endu assets folder (zawierający pliki CSS, JavaScript, zdjęcia), przeznaczony do plików do tłumaczeń languages folderów, a także tych używanych w szablonach interfejsu użytkownika templates folder. Taka struktura modułowa ułatwia konserwację kodu oraz współpracę w zespole.
Stworzenie twojego pierwszego prostego pluginu
Zacznijmy od konkretnego przykładu. Stworzymy plugin, który automatycznie dodaje tekst o prawach autorskich na końcu wszystkich artykułów i treści stron na stronie internetowej.
Najpierw musisz wejść do katalogu instalacji WordPress. wp-content/plugins W folderze utwórz nowy folder o nazwie… my-copyright-noticeNastępnie w tym folderze utwórz główny plik PHP, na przykład o nazwie „main.php”. my-copyright-notice.php。
Dodanie funkcji implementacji zawartości
Będziemy używać filtrów („hooków”) do przefiltrowywania danych. the_content Aby zrealizować tę funkcję, otworz główny plik, najpierw dodaj informacje o head pliku zawierające plugin, a potem napisz funkcję sercową (core function).
<?php
/**
* Plugin Name: 自动版权声明
* Description: 在文章和页面内容末尾自动添加版权信息。
* Version: 1.0
* Author: WordPress 学习者
*/
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* 在内容末尾添加版权声明的函数
*
* @param string $content 原始的文章内容。
* @return string 添加了版权声明后的内容。
*/
function mycn_add_copyright_to_content( $content ) {
// 仅对主循环内的文章和页面生效
if ( is_single() || is_page() ) {
$copyright_text = '<p><em>© Uwaga o prawach autorskich: Ten tekst należy do tej witryny internetowej i nie może być reprodukowany bez pozwolenia.</em></p>';
$content .= $copyright_text;
}
return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器上
add_filter( 'the_content', 'mycn_add_copyright_to_content' ); Po zapisaniu pliku loguj się do panelu administracyjnego WordPress, wejdź na stronę “Dodatki” (Plugins) i powinien pojawić się tam dodatek “Automatic Copyright Statement”. Po jego aktywacji tekst autorskich praw, który ustaliliś, będzie wyświetlany na dole każdego artykułu lub strony. Choć ten przykład jest prosty, pokazuje w pełni cały proces tworzenia, kodowania i aktywowania dodatku.
Polecamy lekturę. Naucz się tworzyć wtyczki do WordPressa od podstaw: zasady, praktyki i zaawansowane techniki.。
Interakcja z bazą danych za pomocą API WordPress
Wysokiej jakości pluginy często wymagają przechowywania i wyszukiwania danych. WordPress oferuje bardzo wygodne klasy do manipulacji z bazą danych. wpdb W połączeniu z API opcji możesz bezpiecznie operować bazą danych, bez konieczności pisania kodu SQL.
Dla prostych danych w formie par klucza-wartości, np. ustawień konfiguracji pluginów, zdecydowanie zaleca się używanie API opcji. Możesz to zrobić… add_option(), get_option(), update_option() 和 delete_option() Można używać różnych funkcji do zarządzania danymi. Te funkcje automatycznie zajmują się serializacją danych oraz ich zapisem. wp_options W tabeli.
Utwórz niestandardową tabelę w bazie danych.
Gdy konieczne jest przechowywanie strukturalnych, złożonych danych (np. zamówień, rekordów złożonych formularzy), może być potrzebne stworzenie własnych tabel w bazie danych. To zwykle następuje po aktywacji dodatku (pluginu). Aby to zrealizować, należy napisać funkcję i zarejestrować ją w systemie. register_activation_hook Na tym specjalnym haczu.
W głównym pliku twojego pluginu można umieścić kod podobny do następującego:
/**
* 插件激活时创建自定义数据库表
*/
function myplugin_create_custom_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'myplugin_data'; // 获取带前缀的表名,如 wp_myplugin_data
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_id int NOT NULL,
data_value text NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
// 引入 WordPress 升级所需的文件
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
// 注册激活钩子
register_activation_hook( __FILE__, 'myplugin_create_custom_table' ); dbDelta() Funkcje w WordPress są potężnym narzędziem do tworzenia lub aktualizowania tabel w bazie danych. Porównują strukturę istniejących tabel z Twoimi zapytami SQL i dokonują tylko tych zmian, które są konieczne.dbDelta() Jestem bardzo wrażliwy na format zdań SQL (np. definicje kluczy, formatowanie tekstu).
Tworzenie interfejsu do zarządzania pluginami oraz stosowanie standardów bezpieczeństwa
Profesjonalny plugin wymaga zwykle strony konfiguracji w tle, aby użytkownicy mogli zmieniać ustawienia. Możesz użyć “API do ustawień” w WordPress, aby stworzyć tę stronę w sposób standardowy i bezpieczny. To narzędzie zajmuje się walidacją formularzy, obsługą bezpiecznych poli (tzw. „nonce”) oraz przechowaniem ustawień, co znacząco ułatwia proces rozwoju.
Polecamy lekturę. Tematy WordPress dostosowane do potrzeb użytkownika: pełny przewodnik po tworzeniu unikalnego wyglądu witryny od zera。
Dodaj stronę z ustawieniami pluginu.
Najpierw musisz użyć… add_action() Funkcja umożliwia montaż jednego elementu na inny. admin_menu Funkcja wywoływana po wykonaniu akcji („action hook”) służy do dodawania elementów menu i stron internetowych. Następnie, w funkcji wywoływanej na tej stronie, używa się funkcji do konfiguracji API w celu tworzenia formularzy.
Poniżej znajduje się uproszczone przykład, pokazujące, jak dodać stronę z menu najwyższego poziomu oraz zarejestrować pole ustawień:
/**
* 添加插件设置菜单
*/
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'myplugin-settings', // 菜单 slug
'myplugin_settings_page', // 显示设置页面的回调函数
'dashicons-admin-generic', // 图标
80 // 菜单位置
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
/**
* 初始化插件设置
*/
function myplugin_settings_init() {
// 注册一个新的设置到 “myplugin_settings” 页面
register_setting( ‘myplugin_settings’, ‘myplugin_options’ );
// 在页面中添加一个区域
add_settings_section(
‘myplugin_section’,
‘主要设置’,
null, // 可选的区域描述回调函数
‘myplugin_settings’
);
// 向区域中添加一个字段
add_settings_field(
‘api_key’,
‘API 密钥’,
‘myplugin_api_key_field_callback’, // 渲染字段 HTML 的回调函数
‘myplugin_settings’,
‘myplugin_section’
);
}
add_action( ‘admin_init’, ‘myplugin_settings_init’ );
/**
* 渲染 API 密钥字段
*/
function myplugin_api_key_field_callback() {
$options = get_option( ‘myplugin_options’ );
?>
<input type="‘text’" name="‘myplugin_options[api_key]’" value="‘NO NUMERIC NOISE KEY" 1003’>
<?php
}
/**
* 设置页面的显示内容
*/
function myplugin_settings_page() {
?>
<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( ‘myplugin_settings’ ); // 输出安全字段
do_settings_sections( ‘myplugin_settings’ ); // 输出设置区域和字段
submit_button( ‘保存设置’ );
?>
<input type="hidden" name="trp-form-language" value="pl"/></form>
</div>
<?php
} Dodróżować zasady bezpieczeństwa WordPress
Bezpieczeństwo to najważniejszy aspekt przy rozwijaniu wtyczek. Konieczne jest przetwarzanie wszystkich wprowadzanych przez użytkowników danych, a także danych wyświetlanych na ekranie. WordPress oferuje szereg funkcji, które pomogą ci w tym:
* 转义输出:使用 esc_html(), esc_attr(), esc_url() 和 wp_kses_post() Funkcje takie jak te gwarantują, że dane wyświetlone na stronie są bezpieczne.
* 验证和清理输入:在处理表单提交的数据前,使用 sanitize_text_field(), intval(), sanitize_email() Funkcje takie jak „clean-up” są używane do usunięcia niepotrzebnych elementów z kodu, poprawienia struktury i zwiększenia wydajności aplikacji.
* Nonce 验证:对于所有涉及状态更改的操作(如表单提交、AJAX 请求),使用 wp_nonce_field(), wp_create_nonce() 和 wp_verify_nonce() Służy do zapobiegania atakom typu CSRF (Cross-Site Request Forgery).
* 能力检查:使用 current_user_can() Funkcja służy do sprawdzenia, czy aktualny użytkownik posiada upoważnienia do wykonywania danej operacji. ‘edit_posts’, ‘manage_options’)。
Podsumowanie.
Rozwoj pluginów dla WordPress jest procesem systematycznym, który zaczyna się od zrozumienia podstawowej struktury (hooków, informacji w nagłówku strony) i postępnie przechodzi do implementacji funkcji, zarządzania danymi, budowy interfejsu użytkownika oraz wzmacnienia bezpieczeństwa. Poprzez pracę nad prostym pluginem, np. zawierającym informację o prawach autorskich, programiści mogą szybko nabrać zrozumienia dla całego procesu tworzenia pluginów. Następnie mogą nauczyć się korzystać z API dostępnych w WordPress. wpdb Klasa służy do operacji nad danymi i stanowi konieczny krok w przechowaniu złożonych informacji. Na koniec, budowanie przyjaznego interfejsu backendu za pomocą dostępnych API oraz ścisłe stosowanie zasad bezpiecznego kodowania według standardów WordPress są kluczowymi elementami, które gwarantują, że plugin będzie profesjonalny, niezawodny i szeroko przyjęty. Najlepszym sposobem na poprawienie swych umiejętności programistycznych jest regularna praktyka, a także czytanie źródłowego kodu oraz innych wyjątkowych pluginów.
FAQ – najczęściej zadawane pytania.
Jaki minimalny liczba plików jest wymagany do działania wtyczki (pluginu) dla WordPress?
W pełnowym funkcjonalnym pluginie do WordPress może wystąpić tylko jeden plik PHP. Jeśli ten plik zawiera poprawne informacje o nagłówku pluginu oraz umożliwia realizację wymaganych funkcji, WordPress będzie w stanie go rozpoznać i aktywować. W przypadku złożonych pluginów zaleca się rozdzielić je na kilka plików i katalogów, aby ułatwić ich utrzymanie.
Jak zrobić, aby plugin obsługiwał tłumaczenie w kilku językach?
WordPress wykorzystuje technologię GNU gettext do realizacji funkcji internacionalizacji (i18n). Musisz wykonać następujące kroki: Najpierw, w nagłówku pliku z pluginem oraz w miejscach, gdzie znajdują się teksty wymagające tłumaczenia, należy używać specjalnych znaków lub konwencji, aby system mógł automatycznie przetłumaczyć te teksty. __(‘文本’, ‘your-text-domain’) 或 _e(‘文本’, ‘your-text-domain’) Taką funkcję należy „zapakować” (czyli umieścić w odpowiedniej strukturze), a potem użyć narzędzi typu Poedit do generowania pliku szablonu .pot, a także plików .po i .mo w odpowiednim języku. zh_CN.poNa koniec, poprzez… load_plugin_textdomain() Funkcja załadowuje pliki tłumaczeniowe podczas inicjalizacji wtyczki.
Jak należy poprawnie załadować pliki JavaScript i CSS znajdujące się w pluginie?
Aby zapewnić kompatybilność i uniknąć konfliktów, nie należy bezpośrednio linkować do plików zasobów w HTML. W przypadku zasobów front-end należy używać odpowiednich metod lub technik do ich umieszczenia i wykorzystania w strukturze strony internetowej. wp_enqueue_script() 和 wp_enqueue_style() Funkcje i ich zamontowanie. wp_enqueue_scripts Akcje są przypisane do odpowiednich „haków” (hooków). W przypadku zasobów na stronie administratora w tle (backend), konieczne jest ich montowanie (mountowanie) na odpowiednie miejsce w systemie. admin_enqueue_scripts Na haczkach. Te funkcje umożliwiają określenie zależności oraz wersji, a także zapewniają, że te same zasoby są ładowane tylko raz.
Jak debugować w czasie tworzenia pluginów?
WordPress oferuje potężne narzędzia do debugowania. Najpierw, w przypadku witryny internetowej… wp-config.php W dokumencie zostanie przedstawiony WP_DEBUG Konstanta ustawiona jest na… trueTo będzie wyświetlać błędy, ostrzeżenia i powiadomienia PHP bezpośrednio na stronie. Możesz też włączyć to wszystko jednocześnie. WP_DEBUG_LOG(Zapisuj błędy do…) wp-content/debug.log (faile) i WP_DEBUG_DISPLAY(Wybor dotyczy wyświetlania na stronie). Ponadto, użyj… error_log() Używanie funkcji do tworzenia logów w plikach dostosowanych to również skuteczny sposób na monitorowanie zmian wartości zmiennych oraz przebiegu procesów.
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ń