Od nuly: Vytvořte si svůj první WordPress plugin
Vývoj pluginů pro WordPress je základním způsobem, jak rozšířit funkce jádra WordPressu. Vytvářením pluginů mohou vývojáři přidávat webovým stránkám vlastní funkce, aniž by bylo nutné měnit tematické šablony nebo základní soubory WordPressu, což zajišťuje nezávislost a přenositelnost těchto funkcí. Standardní plugin se obvykle skládá z hlavního PHP souboru, volitelných zdrojových souborů (jako je CSS, JavaScript) a jazykových balíčků. Porozumění základní struktuře pluginů je prvním krokem k úspěšnému vývoji.
Základní struktura a vytváření WordPress pluginů
Nejzákladnější formou pluginu je něco, co se umístí…/wp-content/plugins/Složka v adresáři. Tato složka musí obsahovat alespoň jednu hlavní PHP soubor, jejíž záhlaví obsahuje poznámky určené k deklaraci informací o pluginu pro WordPress.
Psaní poznámek do hlavičky pluginu
Hlavní soubor každého pluginu musí začínat určitým blokem PHP komentářů, který se nazývá „plugin header“. WordPress na základě těchto informací rozpozná a zobrazí váš plugin v seznamu pluginů v administraci. Standardní příklad komentáře pro plugin header je následující:
Doporučujeme k přečtení. Podrobný přehled vývoje WordPress pluginů: Od začátků až po efektivní personalizaci。
<?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
*/ Mezi nimi,Plugin NameJe to nutné; ostatní pole jsou volitelná. Pro úplnost a profesionalitu pluginu však doporučujeme vyplnit všechna pole, pokud je to možné.Text DomainSlouží k internacionalizaci a je základem pro překlad následných doplňků.
Vytvořte hlavní soubor a adresář pro plugin.
Nejprve,/wp-content/plugins/Vytvořte novou složku v adresáři, napříkladmy-first-pluginPoté v této složce vytvořte hlavní PHP soubor, který obvykle nese stejné jméno jako složka.my-first-plugin.phpZadejte výše uvedené poznámky do tohoto souboru, uložte ho a poté ho uvidíte a můžete ho aktivovat na stránce “Příslušenství” v administraci WordPress. V tuto chvíli však ještě nemá žádné funkce.
Klíčové koncepty vývoje: Akční háčky a filtry
Architektura pluginů v WordPressu je založena na systému “hooků”, který slouží jako most mezi pluginy a jádrem systému. Hooky se dělí především na dvě kategorie: akční hooky (action hooks) a filtrovací hooky (filter hooks).
Porozumění a použití akčních háčků (action hooks)
Akční háčky vám umožňují spouštět vlastní PHP kód v určitých časech nebo při nastání konkrétních událostí. Můžete je použít k automatizaci různých procesů nebo k provedení jednotlivých úkolů v rámci vašeho webu.add_action()Funkce “namontuje” vaši funkci na určitý „háček“ (hook). Například může automaticky přidávat text na konci obsahu článku.
function myplugin_add_footer_text( $content ) {
if ( is_single() ) {
$content .= '<p>Děkujeme, že jste si to přečetli!</p>';
}
return $content;
}
add_filter( 'the_content', 'myplugin_add_footer_text' ); Všimněte si, že tento příklad ve skutečnosti používá „filter hooky“ k úpravě obsahu. Typickým příkladem „action hooku“ je přidávání menu v administračním rozhraní:
Doporučujeme k přečtení. Naučte se vývoj WordPress pluginů od základů: Vytvořte si svou první vlastní funkci。
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置',
'我的插件',
'manage_options',
'myplugin-settings',
'myplugin_settings_page'
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' ); Zde,add_action()„Převést funkci“myplugin_add_admin_menuPřipojit kadmin_menuTento akční hook bude volán WordPress při vytváření backend menu.
Porozumění a použití filtrovacích hooků
Filtrovací hooky slouží k úpravě dat, která vznikají během zpracování v WordPressu. Můžete je použít k provedení různých úkolů, např. k přidání nových informací, úpravě stávajících dat nebo k jejich filtrování.add_filter()Funkce slouží k načtení vaší funkce a jejímu následnému spuštění. Filtrační funkce přijímá vstupní hodnotu, tyto hodnoty upraví a poté musí vrátit upravené hodnoty. Například: úprava nadpisu článku.
function myplugin_modify_title( $title ) {
return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' ); Filtry jsou velmi výkonné a často se používají k úpravě výsledků dotazů, textového obsahu, hodnot možností a téměř všech dat generovaných WordPressem.
Přidejte pro plugin stránku nastavení a možnosti.
Plug-in s kompletní funkcionalitou obvykle musí poskytovat uživatelům možnosti konfigurace. WordPress nabízí API pro nastavení, který umožňuje vytvářet stránky s konfiguračními možnostmi způsobem bezpečným a standardizovaným.
Vytvoření správního menu a stránek
Nejprve potřebujete použít…add_menu_page()或add_options_page()Použijte funkce typu „add“ nebo „create“ k vytvoření správné stránky. Obvykle tento proces připojíme („mount“) k existujícímu systému nebo aplikaci.admin_menuNa háčku, jak je ukázáno v předchozím příkladu. Zde…myplugin_settings_pageJedná se o callback funkci určenou k renderování HTML obsahu stránky pro nastavení.
Přihlaste možnosti pomocí API Settings.
API pro nastavení poskytuje bezpečný způsob registrace, ověření a ukládání nastavení. Klíčové kroky zahrnují:register_setting()Zaregistrujte skupinu nastavení a použijte ji.add_settings_section()Přidejte blok nastavení a také možnost jeho použití.add_settings_field()Přidejte konkrétní pole nastavení.
Doporučujeme k přečtení. Kompletní průvodce vývojem WordPress pluginů: Od základů po pokročilé praktické návody。
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' ); Poté potřebujete napsat odpovídající funkci na zpětné volání (callback function).myplugin_section_general_cb和myplugin_field_text_cbVytvořte HTML kód pro blokový popis a pole pro vstup dat. Na konci přidejte potřebné elementy.myplugin_settings_pageVe funkci se to používá.settings_fields()和do_settings_sections()Funkce slouží k výstupu celého formuláře.
Bezpečnost pluginů a osvědčené postupy
Při vývoji doplňků je bezpečnost hlavním faktorem, který je třeba zvážit. Nebezpečný doplněk může ohrozit celý web.
Data validation, cleaning, and escaping
Nikdy nesmíte důvěřovat datům, která zadají uživatelé, ani datům pocházejícím z databáze. Při zpracování jakéhokoli vstupu (např. $_POST, $_GET) je nutné provést jejich ověření a čištění. WordPress nabízí mnoho funkcí k tomuto účelu.sanitize_text_field(), intval(), wp_kses()Atd. Při výstupu dat do HTML nebo JavaScript je nutné provést jejich escapeování pomocí funkcí, jako např.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' ) ); Použití ne-CE a kontrola oprávnění
Pro všechny požadavky na odeslání formulářů do backendu nebo AJAX požadavků ze strany pluginů je nutné použít WordPressové „nonce“ k ověření legitimity a jedinečnosti těchto požadavků, aby bylo možné zabránit útokům typu cross-site request forgery. Zároveň je třeba…current_user_can()Funkce zkontroluje, zda má aktuální uživatel oprávnění potřebná k provedení této operace.
// 在表单中输出 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( '安全校验失败。' );
}
// ... 安全地处理数据 ...
} Závěr
Vývoj pluginů pro WordPress je systématický proces, který začíná pochopením základní struktury a mechanismů hooků, pokračuje implementací funkcí a vytvářením uživatelského rozhraní a musí být provázen přísnými bezpečnostními zásadami. Dodržováním kódovacích standardů WordPress a plným využitím poskytované API mohou vývojáři vytvořit robustní, bezpečné a snadno udržovatelné pluginy. Klíčovým aspektem je bezproblémová integrace vlastních funkcí do životního cyklu WordPress pomocí hooků typu „akce“ (actions) a „filtrů“ (filters), přičemž se pro správu konfigurace využívá API Settings. Vždy je třeba upřednostňovat ověřování dat, jejich čištění, escapeování a kontrolu oprávnění.
Časté dotazy
###: Jak ladit můj WordPress plugin?
Prvním krokem je zapnutí režimu ladění (debugging mode) v WordPressu.wp-config.phpV dokumentu budou uvedeny následující informace:WP_DEBUGKonstanta je nastavena natrueTo bude zobrazovat chyby, varování a upozornění PHP přímo na stránce. Pro složitější ladění lze použít…error_log()Funkce zaznamenává informace do chybového logu serveru, nebo lze použít speciální ladící nástroje k zobrazení detailních údajů o dotazech, háčcích (hooks) a dalších funkcích.
Jak můj plugin podporovat více jazyků?
WordPress využívá framework GNU gettext pro zajištění internacionalizace. Nejprve je nutné definovat potřebné parametry v poznámkách na začátku souboru pluginu.Text DomainV kódu pluginu použijte pro všechny řetězce, které je třeba přeložit, následující způsob:__()Provedení překladu…_e()Přeložte text a poté pomocí nástroje jako Poedit extrahujte řetězce z zdrojového kódu pluginu..potŠablony souborů – pro každý jazyk poté vytvořte odpovídající verze těchto šablon..poA po kompilaci.moSoubor a umístěte jej do pluginu./languages/V adresáři.
Jak se může zabránit konfliktům mezi názvy tříd v různých pluginech?
Aby se předešlo konfliktům mezi názvy tříd, funkcí nebo konstant, je osvědčenou praxí používat jmenné prostory (namespacey) nebo přidávat jedinečné předpony ke všem identifikátorům. Od verze PHP 5.3 se doporučuje používání jmenných prostor. Například:namespace MyPluginAdmin;Pokud je nutné zohlednit kompatibilitu, je třeba použít předponu, která by měla být dostatečně jedinečná. Například lze kombinovat zkratky názvu společnosti a názvu pluginu:function acme_myplugin_init() {}Název třídy je definován jako…class Acme_MyPlugin_Admin_Settings {}。
Jak přidat do svého pluginu vlastní databázovou tabulku?
Nejlepší čas na vytvoření vlastní tabulky je při aktivaci pluginu. Kód pro vytvoření tabulky můžete zabalit do funkce a poté jej použít při potřebě.register_activation_hook()Funkce slouží k registraci. Uvnitř této funkce se používá…dbDelta()Funkce slouží k bezpečnému vytvoření nebo aktualizaci struktury tabulky a vyžaduje použití velmi konkrétního formátu SQL. Nezapomeňte tuto funkci vždy používat.$wpdb->prefixPřidejte předponu „site“ k názvům tabulek, abyste podpořili prostředí s více webovými stránkami.
Jaký je další krok? Co bych měl udělat dál?
Další čtení a praktické znalosti
Následující obsah souvisí s tématem tohoto článku a je vhodný k dalšímu prostudování. Obvykle je lepší začít čtením článku, který je nejblíže vašemu aktuálnímu problému, a poté postupně přecházet k souvisejícím tématům.
- Jak vybrat a přizpůsobit si dokonalý WordPress téma?
- Průvodce vývojem WordPress pluginů: Vytvořte si svůj první vlastní plugin od nuly
- Jak stát se vývojářem WordPress pluginů: Kompletní průvodce od začátku
- Od nuly k jedné: Kompletní průvodce a praktické tipy pro vytvoření profesionální webové stránky pomocí WordPressu.
- Kompletní průvodce vývojem pluginů pro WordPress: Od základů až po pokročilé návody na vytváření profesionálních rozšíření