Příprava vývojového prostředí pro pluginy WordPress
Než začnete psát kód, potřebujete vhodné vývojové prostředí. To nejen zvýší vaši výkonnost při vývoji, ale také vám pomůže lépe ladit a testovat pluginy. Nejprve si musíte na svém lokálním počítači nastavit prostředí pro spuštění WordPressu. Můžete zvolit integrovaná vývojová prostředí, jako jsou XAMPP, MAMP nebo Local by Flywheel, která rychle nainstalují PHP, MySQL a servery Apache/Nginx. Pro základní soubory WordPressu doporučujeme stáhnout a nainstalovat nejnovější stabilní verzi z oficiálních webových stránek.
Ujistěte se, že vaše verze PHP splňuje minimální požadavky WordPressu, a také povolte funkci hlášení chyb – to je velmi důležité pro ladění. Můžete to udělat pomocí následujících kroků:wp-config.phpPřidejte následující kód do souboru, abyste aktivovali režim ladění:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // 将错误记录到 /wp-content/debug.log
define('WP_DEBUG_DISPLAY', false); // 不在页面上显示错误 Kromě toho je nezbytný silný editor kódu, jako je např. Visual Studio Code, PhpStorm nebo Sublime Text. Tyto editory obvykle poskytují výrazové zvýraznění kódu, podpůru při psaní kódu a integraci s nástroji pro správu verzí, což výrazně zlepšuje zážitek při programování. Dále doporučujeme nainstalovat v prohlížeči nástroje určené k vývoji a zvážit použití rozšíření speciálně navržených pro WordPress, která usnadňují kontrolu hooků, dotazování databáze a sledování výkonnosti webu.
Doporučujeme k přečtení. Úvodní průvodce vývojem WordPress pluginů: Vytvořte si svůj první funkční modul od nuly。
Vytvořte svůj první soubor plug-inu.
Nejzákladnější formou WordPress pluginu je PHP soubor. Všechny pluginy jsou uloženy v určitém adresáři v systému WordPress./wp-content/plugins/V adresáři mohou být jednotlivé pluginy buď samostatné PHP soubory, nebo složky obsahující více souborů.
Nejprve vytvořte pro svůj plugin složku s jedinečným názvem, například:my-first-pluginV této složce vytvořte hlavní soubor pluginu, který se obvykle jmenuje stejně jako složka.my-first-plugin.phpNa začátku tohoto souboru musí být přítomen poznámkový blok pro hlavičku pluginu, který splňuje standardy WordPressu. Tento poznámkový blok poskytuje systému WordPress základní informace o pluginu.
Příklad hlavičkového komentáře v souboru hlavního pluginu:
<?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
*/ V tomto komentáři je “Plugin Name” povinným polem, které určuje název pluginu zobrazovaný v administračním rozhraní. Další informace, jako je verze nebo autor, pomáhají uživatelům lépe pochopit funkce pluginu. Po vytvoření tohoto souboru jej prosím umístěte do odpovídajícího adresáře./wp-content/plugins/my-first-plugin/Katalog. Nyní se přihlaste do svého WordPress administrátorského účtu a přejděte na stránku “Příslušenství” (Plugins). Měli byste tam vidět nový plugin s názvem “Můj první vlastní plugin” a mohli byste ho aktivovat. I když zatím nic nedělá, úspěšně jste vytvořili základní strukturu pluginu.
Zpracování aktivace a deaktivace pluginů
Při aktivaci a deaktivaci pluginů je často nutné provést určité inicializační a čistící úkony, jako je vytvoření databázových tabulek, nastavení výchozích nastavení nebo odstranění dočasných dat. WordPress tyto operace spravuje pomocí dvou speciálních „hooků“ (hooků).register_activation_hook和register_deactivation_hook。
Doporučujeme k přečtení. Od začátku až po odbornost: Kompletní průvodce vývojem pluginů pro WordPress a osvědčené postupy。
Tyto „hooky“ (funkce, které jsou spouštěny v určitých okamžicích během činnosti pluginu) můžete definovat v hlavním souboru pluginu. Například, když je plugin aktivován, možná chcete zapsat nějakou výchozí konfigurační volbu do databáze; když je plugin deaktivován, může být potřeba tuto volbu smazat. Kód pro implementaci tohoto chování vypadá následovně:
// 定义插件激活时执行的函数
function my_plugin_activate() {
// 添加一个默认选项到数据库
add_option('my_plugin_default_option', '这是默认值');
// 或者可以在这里初始化自定义数据库表(需要更复杂的SQL)
}
register_activation_hook(__FILE__, 'my_plugin_activate');
// 定义插件停用时执行的函数
function my_plugin_deactivate() {
// 删除之前创建的选项
delete_option('my_plugin_default_option');
// 注意:通常不在停用钩子中删除数据,以免用户重新激活时丢失设置
// 更常见的清理工作在卸载钩子中处理
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate'); Je třeba si uvědomit, že…register_deactivation_hookObvykle se to používá pro lehké úklidy, zatímco trvalé smazání dat (např. smazání tabulek v databázi) by mělo být provedeno v rámci funkcí určených k odinstalaci softwaru. Tyto funkce musí být implementovány pomocí odinstalačních „hooků“ (odinstalačních mechanismů).register_uninstall_hookPřihlaste se k registraci. Správné využití těchto „hooků“ zajistí, že váš plugin bude fungovat podle předpisů a na webových stránkách nezůstanou zbytečné data.
Porozumění a využití hooků a filtrů
Podstatou vývoje pluginů pro WordPress je mechanismus zvaný “hooky” (háčky), který vám umožňuje vložit vlastní kód v určité časové momenty nebo na konkrétních místech, abyste mohli upravit nebo rozšířit základní funkce WordPressu. Hooky se dělí především na dvě kategorie: akce (Actions) a filtry (Filters).
Akční háčky vám umožňují spouštět vlastní funkce při nastání konkrétních událostí. Například po zveřejnění článku…publish_postPři načítání na vrcholu webové stránky…wp_head) nebo při inicializaci v administračním rozhraní (admin_initMůžete použít…add_action()Funkce slouží k načtení a spuštění vašeho kódu. Níže je jednoduchý příklad, který automaticky přidává vlastní text na konci každého článku:
function add_custom_footer_to_content($content) {
if (is_single()) { // 仅在单篇文章页面添加
$custom_text = '<p><em>Děkujeme, že jste si tento článek přečetli!</em></p>';
$content .= $custom_text;
}
return $content;
}
// 使用‘the_content’过滤器,注意这是一个过滤器(Filter)的例子
add_filter('the_content', 'add_custom_footer_to_content'); Jak je ukázáno výše uvedeným kódem, ve skutečnosti používáme filtry (Filters). Hooky filtrů slouží k úpravě dat, která jsou jim předána. Hlavní rozdíl mezi filtry a akcemi (Actions) spočívá v tom, že filtry musí vrátit upravené hodnoty. Mezi typické filtry patří…the_content(Úprava obsahu článku)the_title(Upravený nadpis) Aexcerpt_length(Upravená délka abstraktu). Související s tím…add_filter()Funkce slouží k připojení („mountování“) filtrovacích funkcí.
Vytvořte vlastní hooky, které mohou ostatní rozšiřovat.
Dobře navržený plugin nejen využívá základní hooky WordPressu, ale také poskytuje vlastní, přizpůsobené hooky, aby ostatní vývojáři mohli váš plugin rozšiřovat.do_action()Funkce může vytvořit akční hook (akční „háček“), který lze použít k provádění určitých operací.apply_filters()Lze vytvořit filtrový háček.
Doporučujeme k přečtení. Kompletní průvodce vývojem WordPress pluginů: Postavte si svůj vlastní plugin od nuly。
Například, předtím než váš plugin zpracuje určité data, můžete poskytnout filtr, který umožní ostatním upravit vstupní parametry:
// 定义插件的主要处理函数
function my_plugin_process_data($input_data) {
// 在核心处理前,允许其他开发者通过过滤器修改 $input_data
$filtered_data = apply_filters('my_plugin_filter_input', $input_data);
// ... 使用 $filtered_data 进行核心处理 ...
// 在处理完成后,触发一个动作钩子,通知其他开发者
do_action('my_plugin_after_processing', $filtered_data);
return $result;
} Vytvořením vlastních hooků získá váš plugin vysokou rozšiřitelnost a dodržuje tak vývojovou filozofii samotného WordPressu.
Přidejte pro plugin správnou stránku a možnosti nastavení.
Většina užitečných pluginů vyžaduje administrátorské rozhraní, které umožňuje správci webové stránky nastavovat parametry pluginů. WordPress poskytuje bohatou sadu API pro vytváření administrátorských menu a nastavovacích stránek.
Nejprve potřebujete použít…add_action('admin_menu', 'your_function')Kliknutím na tlačítko „Hook“ můžete registrovat položku menu. V příslušné funkci poté použijte tuto registraci.add_menu_page()或add_submenu_page()Funkce slouží k přidání hlavního menu nebo podmenü. Níže je základní příklad, jak přidat hlavní menu a nastavit stránky:
// Připojte se k admin_menu, abyste přidali administrátorskou nabídku
function my_plugin_add_admin_menu() {
add_menu_page(
'Nastavení mého pluginu', // Název stránky
'Můj plugin', // Název nabídky
'manage_options', // Oprávnění (administrátor)
'my-plugin-settings', // Slug nabídky
'my_plugin_settings_page', // Funkce pro zobrazení obsahu stránky
'dashicons-admin-generic', // Ikona (Dashicon)
80 // Pozice nabídky
);
}
add_action('admin_menu', 'my_plugin_add_admin_menu');
// Definujte obsah stránky nastavení
function my_plugin_settings_page() {
// Zkontrolujte oprávnění uživatele
if (!current_user_can('manage_options')) {
return;
}
?>
<div class="wrap">
<h1><?php echo esc_html(get_admin_page_title()); ?></h1>
<form action="/cs/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段和非ce字段
settings_fields('my_plugin_options_group');
do_settings_sections('my-plugin-settings');
submit_button('保存设置');
?>
<input type="hidden" name="trp-form-language" value="cs"/></form>
</div>
<br /><?php
} Pole pro nastavení registrace a ověření
Samotná stránka nestačí; pro bezpečné registrování, ukládání a ověřování nastavení je třeba využít WordPress Settings API. Tento proces zahrnuje použití…register_setting()、add_settings_section()和add_settings_field()Funkce jako…
Následující kód ukazuje, jak registrovat skupinu nastavení a textové pole:
// 初始化插件设置
function my_plugin_settings_init() {
// 注册一个设置选项组及其数据
register_setting(
'my_plugin_options_group', // 选项组名,需与settings_fields()参数一致
'my_plugin_settings', // 存储在wp_options表中的选项名
'my_plugin_sanitize_input' // 可选的验证回调函数
);
// 添加一个设置区域
add_settings_section(
'my_plugin_section_main',
'主要设置',
null, // 区域描述的回调函数,可为空
'my-plugin-settings' // 所属页面的slug
);
// 向该区域添加一个具体的字段
add_settings_field(
'my_plugin_field_text',
'示例文本字段',
'my_plugin_field_text_render', // 渲染字段HTML的回调函数
'my-plugin-settings',
'my_plugin_section_main'
);
}
add_action('admin_init', 'my_plugin_settings_init');
// 渲染文本输入字段的函数
function my_plugin_field_text_render() {
$options = get_option('my_plugin_settings');
$value = $options['text_field'] ?? ''; // PHP 7.0+ 空合并运算符
?>
<input type='text' name='my_plugin_settings[text_field]' value='<?php echo esc_attr($value); ?>'>
<?php
}
// 清理和验证输入的函数
function my_plugin_sanitize_input($input) {
$sanitized_input = [];
if (isset($input['text_field'])) {
// 清理文本输入,移除非法标签
$sanitized_input['text_field'] = sanitize_text_field($input['text_field']);
}
return $sanitized_input;
} Prostřednictvím API nastavení (Settings API) WordPress automaticky zpracovává ukládání možností (optionů), ověřování bezpečnosti a kontrolu oprávnění, což výrazně zjednodušuje vývojový proces a zvyšuje bezpečnost.
Závěr
Prostřednictvím tohoto průvodce jsme systematicky prošli hlavními kroky vývoje WordPress pluginů: od nastavení prostředí, vytvoření základních souborů pluginu, přes pochopení a využití klíčového systému „hooků“, až po přidání profesionálního uživatelského rozhraní a nastavitelných možností pro plugin. Každý krok obsahuje důležité úryvky kódu a standardní postupy. Srdcem vývoje pluginů je efektivní využití rozsáhlého systému „hooků“ WordPressu k rozšíření funkcí, přičemž je nutné dodržovat jeho API specifikace pro zajištění bezpečnosti a kompatibility. Nezapomeňte, že začátek je v jednoduché myšlence, postupné přidávání funkcí a pravidelné testování během celého vývojového procesu je efektivním způsobem vytvoření kvalitního pluginu. Následně můžete prozkoumat pokročilejší tématy, jako je vytváření vlastních typů článků, přidávání „shortcode“, zpracování AJAX požadavků a internacionalizace vašeho pluginu.
Časté dotazy
Je nutné být zdatným v PHP, abyste vytvářeli doplňky pro WordPress?
Ano, pevné základy v PHP jsou nezbytné. Jádro WordPressu i jeho pluginy jsou totiž napsány v PHP. Musíte porozumět syntaxi PHP, funkcím, konceptům objektového programování a podobně. Zároveň je užitečné mít základní znalosti HTML, CSS a JavaScriptu, což vám pomůže při vytváření uživatelského rozhraní a interakcí.
Kolik souborů musí obsahovat plugin?
Není to povinné. Plugin může obsahovat pouze jediný hlavní PHP soubor. Avšak s rostoucí složitostí funkcí je vhodné modularizovat kód do více souborů.admin.phpZpracování na pozadí.public.phpZpracování front-endu.includesUkládání společných funkcí do složek je lepší postup, který usnadňuje organizaci a údržbu kódu.
Proč po aktivaci mého pluginu webové stránky zobrazují pouze bílý obrazovku?
Obvykle je to způsobeno fatální chybou (Fatal Error), např. syntaktickou chybou, voláním neexistující funkce nebo třídy. Ujistěte se, že jste…wp-config.phpBylo zapnuto.WP_DEBUGZkontrolujte režim a prověřte ho.wp-content/debug.logChybové informace jsou obsaženy v souboru. Přístup k webové stránce lze rychle obnovit tak, že zakážete svůj plugin prostřednictvím FTP nebo správce souborů (přejmenováním složky s pluginem).
Jak bezpečně zpracovat data odeslaná uživateli na straně klienta (frontendu)?
Nikdy nesmíte důvěřovat datům, která zadají uživatelé. Před zpracováním jakýchkoli dat pocházejících z formulářů, parametrů URL nebo cookie je nutné je ověřit, očistit a předat je ve správné formě (např. pomocí funkce escape). WordPress poskytuje mnoho bezpečnostních funkcí, které vám v tom pomohou.sanitize_text_field()(Očištění textu)esc_url()(Escaped URL)wp_kses_post()(Filtrujte obsah pomocí povolených HTML značek) aintval()(Převeďte na celá čísla.) Při výstupu dat na HTML stránku je nutné použít…esc_html()、esc_attr()Použijte funkce jako escape() k odstranění speciálních znaků.
Jak zajistit, aby text v mém pluginu byl podporován více jazyky?
To je nutné realizovat pomocí internacionalizace (i18n). Ve svém kódu nahraďte všechny textové stránky, které je potřeba přeložit, příslušnými překladovými texty.__()或_e()Zabalte funkci do příslušného obalu. Poté správně nastavte poznámky v části hlavy pluginu.Text Domain和Domain PathVytvořte to pomocí nástroje, jako je Poedit..potŠablony souborů a jejich generování v různých jazycích.po和.moWordPress automaticky načte odpovídající překlad podle jazykových nastavení webové stránky.
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.
- Předmluva: Proč zvolit WordPress pro vývoj
- Průvodce výstavbou webových stránek: Od základů po kompletní pochopení celého procesu vývoje moderních webových aplikací
- Ultimátní průvodce pochopením temat WordPress: Od základů až po pokročilé úpravy
- Proč jste si vybrali WooCommerce jako své řešení pro e-shop?
- Kompletní průvodce WooCommerce: Vytvoření vašeho online obchodu a prodejní strategie od nuly