WordPress pluginy jsou klíčovým nástrojem pro rozšíření jeho základních funkcí. Díky pluginům můžete webu přidat nekonečné množství funkcí, aniž byste museli měnit samotný základní kód WordPressu. Vývoj pluginů se řídí řadou pravidel a osvědčených postupů, které zajišťují jejich bezpečnost, výkon a udržovatelnost. Standardní plugin obsahuje alespoň jednu hlavní soubor, jejíž název obvykle odpovídá názvu samotného pluginu. my-awesome-plugin.phpTento článek vás provede od základních pojmů a postupně vás přivede do světa vývoje doplňků (plug-inů).
Porozumění základním principům pluginů
WordPress plugin je v podstatě jeden nebo více PHP souborů, které jsou uloženy… /wp-content/plugins/ V adresáři. Pluginy komunikují s jádrem WordPress prostřednictvím API a systému hooků, které WordPress poskytuje.
Funkční princip systému hooků
Systém hooků je jádrem vývoje pluginů pro WordPress. Vývojáři se do výchozího pracovního postupu WordPressu “zapojují” především dvěma způsoby: pomocí akcí (Actions) a filtrů (Filters). Akce vám umožňují spouštět vlastní kód v určitých okamžicích, zatímco filtry vám umožňují upravovat data, která jsou během procesu předávána.
Doporučujeme k přečtení. Vývoj WordPress pluginů od základů až po pokročilé úrovně: Postupná příručka, jak vytvořit svou vlastní funkci。
Například, pomocí… add_action() Funkce může registrovat akční hook. Když WordPress dorazí k tomuto bodu akce, bude spuštěna vaše přiřazená zpětná volání (callback funkce).
Standardní informace o hlavičce souboru pro plugin
Hlavní PHP soubor každého pluginu musí obsahovat standardizovaný blok poznámek v záhlaví souboru, který poskytuje WordPressu metadata o tomto pluginu. Tyto data ovlivňují způsob, jakým je plugin zobrazen na stránce pro správu pluginů v pozadí.
<?php
/**
* Plugin Name: 我的超级插件
* Plugin URI: https://www.example.com/my-super-plugin/
* Description: 这是一个用来演示插件开发基础的示例插件。
* Version: 1.0.0
* Author: 张三
* Author URI: https://www.example.com/
* License: GPL v2 or later
* Text Domain: my-super-plugin
*/ Načítání a aktivace pluginů
Když uživatel aktivuje nějaký plugin prostřednictvím administrace WordPressu, WordPress bude při každém načtení stránky spouštět kód obsažený v hlavním souboru tohoto pluginu (pokud tento kód není uložen v funkcích nebo není chráněn podmínkami). Proto se obvykle doporučuje, abyste veškerý funkční kód uložili do funkcí nebo tříd a volali jej pomocí „hooků“ (zámkových bodů), aby se předešlo jeho spuštění při neaktivovaném pluginu.
Vytvořte svůj první plugin.
Pojďme tedy začít vytvářet jednoduchý plugin, jehož funkcí bude automatické přidávání prohlášení o autorských právech na konci obsahu všech článků na webu.
Vytvoření hlavního souboru zásuvného modulu
Nejprve, /wp-content/plugins/ V adresáři vytvořte novou složku a pojmenujte ji… my-first-pluginPoté v této složce vytvořte hlavní soubor. my-first-plugin.phpA přidejte výše uvedené standardní informace o hlavičce souboru.
Doporučujeme k přečtení. Vývoj pluginů pro WordPress: Kompletní průvodce od základů až po pokročilé znalosti – Vytváření vysoce přizpůsobitelných funkcí。
Upravení obsahu článku pomocí filtrů
Použijeme the_content Filtry slouží k úpravě výstupu článků. Přidejte následující kód do svého hlavního souboru:
function myfp_add_copyright_to_content($content) {
// 确保只在文章主循环中、且非管理后台执行
if (is_single() && !is_admin()) {
$copyright_text = '<p><em>Copyright to this article belongs to this website. Please indicate the source when reproducing it.</em></p>';
$content .= $copyright_text;
}
return $content;
}
add_filter('the_content', 'myfp_add_copyright_to_content'); myfp_add_copyright_to_content Funkce přijímá jeden parametr. $contentTj. obsah článku. Používáme funkce pro podmínkové určování. is_single()Ujistěte se, že se to přidává pouze na stránce konkrétního článku. !is_admin() Tím se zabrání zobrazení tohoto textu o autorských právech v editoru v pozadí.
Lokalizace pluginů
Aby plugin podporoval více jazyků, je nutné provést internacionalizaci (i18n). Nejprve bylo to nastaveno v hlavičce hlavního souboru. Text Domain: my-first-pluginPoté se soubory s jazykovými nastaveními načtou při inicializaci pluginu.
Obvykle používáme… plugins_loaded Pro bezpečné načtení překladu použijte tuto akci. __() 或 _e() Použijte funkce, jako jsou `wrap()` nebo `enclose()`, aby byly všechny řetězce, které je třeba přeložit, uzavřeny do určitého formátu.
function myfp_load_textdomain() {
load_plugin_textdomain(
'my-first-plugin',
false,
dirname(plugin_basename(__FILE__)) . '/languages/'
);
}
add_action('plugins_loaded', 'myfp_load_textdomain'); Vysoký režim vývoje doplňků
Když se funkce pluginů stávají složitějšími, použití objektově orientovaného (OOP) a strukturovanějšího způsobu vývoje přináší lepší organizaci, zabalení (encapsulation) a udržovatelnost kódu.
Použití objektově orientovaného programování
Použití tříd k zabalení všech funkcí pluginu je rozumné rozhodnutí. To může zabránit konfliktům názvů funkcí a poskytnout jasnou strukturu kódu.
Doporučujeme k přečtení. Podrobné vysvětlení: Naučte se základy a praktické dovednosti vývoje pluginů pro WordPress od nuly.。
class My_Advanced_Plugin {
public function __construct() {
// 在构造函数中绑定所有钩子
add_action('wp_footer', array($this, 'add_footer_notice'));
add_filter('the_title', array($this, 'modify_post_title'));
}
public function add_footer_notice() {
echo '<p style="text-align:center;">Technickou podporu poskytuje My Advanced Plugin.</p>';
}
public function modify_post_title($title) {
if (in_the_loop()) {
return '📝 ' . $title;
}
return $title;
}
}
// 实例化插件类
new My_Advanced_Plugin(); Přidat stránku pro nastavení administrativního panelu
Mnoho pluginů vyžaduje, aby byly uživatelům poskytnuty možnosti konfigurace. Přidání stránek nastavení v administraci WordPress obvykle zahrnuje použití add_menu_page() 或 add_submenu_page() Funkce, spolu s API Settings, slouží k bezpečnému ukládání nastavení.
class My_Plugin_Settings {
public function __construct() {
add_action('admin_menu', array($this, 'add_admin_menu'));
add_action('admin_init', array($this, 'register_settings'));
}
public function add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'my-plugin-settings', // 菜单别名
array($this, 'render_settings_page') // 回调函数
);
}
public function render_settings_page() {
?>
<div class="wrap">
<h1>Nastavení mého pluginu</h1>
<form method="post" action="/cs/options.php/" data-trp-original-action="options.php">
<?php
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>
<?php
}
public function register_settings() {
register_setting('my_plugin_options_group', 'my_plugin_option_name');
// ... 添加设置字段和章节
}
} Vytvoření vlastní databázové tabulky
Pro některé pluginy, které potřebují ukládat složitá data, může být nutné vytvořit vlastní tabulky dat. Tato práce by měla být dokončena při aktivaci pluginu.
WordPress poskytuje pohodlnou třídu pro práci s databází. wpdbKód pro vytvoření tabulky se obvykle nachází v souboru, který je přístupný prostřednictvím… register_activation_hook V registrované funkci.
function my_plugin_create_database_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'my_custom_data';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_id mediumint(9) NOT NULL,
data text NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(__FILE__, 'my_plugin_create_database_table'); Bezpečnost a distribuce pluginů
Před nasazením pluginu je nutné zajistit jeho bezpečnost a porozumět základnímu postupu jeho distribuce.
Implementovat osvědčené postupy zabezpečení
Všechna data přijatá od uživatelů, ať už pocházejí z jakéhokoli zdroje… $_GET、$_POST Stále jde o databáze, a všechny údaje musí být ověřeny, očištěny a převedeny do vhodného formátu („escaped“). Vždy používejte funkce poskytované WordPressem. esc_html()、wp_strip_all_tags()、intval() příliš prepare() Metody pro zpracování SQL dotazů za účelem prevence útoků typu XSS a SQL injection.
Pro provádění kontrol schopností správců nebo osob provádějících klíčové operace je nutné vždy používat funkce určené k ověření těchto schopností. current_user_can('manage_options') 或 check_ajax_referer()。
Připravujete plugin pro odeslání do oficiálního katalogu.
Pokud chcete plugin distribuovat zdarma mezi uživatele po celém světě, můžete ho přihlásit do repozitáře pluginů na WordPress.org. K tomu je potřeba striktně dodržovat určité standardy – mezi ně patří používání systému SVN pro správu verzí kódu, zajištění kvality kódu, poskytnutí překladových souborů atd. Dobrý plugin by měl být také dobře dokumentovaný a snadno použitelný. readme.txt Soubor je nutný a dodržuje určitý formát, který slouží k zobrazení informací na stránce s detaily pluginu.
Závěr
Vývoj pluginů pro WordPress začíná pochopením základního systému hooků, poté se postupně učíte vytvářet funkce, spravovat administrativní rozhraní, zpracovávat data a nakonec se zaměřujete na bezpečnost a distribuci pluginů. Začátečníci by měli začít vytvářením pluginu s jednoduchými filtry, poté mohou zkoušet objektově orientované programování, přidávání stránek pro nastavení a práci s vlastními databázovými tabulkami. Mějte neustále na paměti, že bezpečnost je nejdůležitějším aspektem vývoje – dobrou znalostí široké škály bezpečnostních funkcí poskytovaných WordPressem je klíč k vytvoření spolehlivých pluginů. Dodržování vývojových standardů a osvědčených postupů zajistí, že váš plugin bude snadno udržovatelný a zároveň vytvoří dobrou základnu pro jeho budoucí publikaci v oficiálním katalogu nebo na trhu.
Časté dotazy
Kolik souborů musí mít minimálně jeden plugin?
Pro jeden plugin je potřeba minimálně jedna PHP soubor. Stačí, aby tento soubor obsahoval správné informace o hlavičce pluginu a byl uložen na správném místě. /wp-content/plugins/ Pokud se soubor nachází v adresáři nebo jeho podadresářích, WordPress jej dokáže identifikovat a načíst.
Samozřejmě, s rostoucí složitostí funkcí je lepším způsobem organizace kódu jeho rozdělení do více souborů – např. JavaScriptu, CSS, samostatných PHP tříd atd.
Jaký je rozdíl mezi hooky a filtry v WordPress pluginech?
Ačkoli se akční háčky (Action Hooks) a filtrovací háčky (Filter Hooks) někdy společně označují jako “háčky” (hooks), jejich účely jsou odlišné.
Akční háčky (action hooks) vám umožňují v konkrétních fázích životního cyklu WordPressu “vložit” kus vlastního kódu. Nejsou určeny k vracení hodnot, ale pouze k provedení určité akce – např. odeslání e-mailu, zaznamenání do logů atd. Klíčovou funkcí pro práci s akčními háčky je… add_action() 和 do_action()。
Filtrovací hooky vám umožňují “upravit” hodnotu nějaké proměnné (obvykle řetězce nebo pole). Očekávají, že vaše callback funkce vrátí upravenou hodnotu. Klíčovou funkcí je… add_filter() 和 apply_filters()。
Pro jednoduché pochopení: Akce znamená “dělat něco konkrétního”, zatímco filtr slouží k “úpravě dat”.
Jak zabránit konfliktům mezi názvy funkcí pluginů a názvy temat nebo jiných pluginů?
Nejlepším způsobem je použít objektově orientované programování a všechny vaše funkce zabalit do jedné třídy. Tímto způsobem je nutné udržet jedinečnými pouze názvy tříd a metod.
Pokud používáte procedurální programování, měli byste všem názvům funkcí, konstant a globálních proměnných přidat jedinečný, snadno rozpoznatelný předponový symbol. Obvykle se jako předpona používají názvy pluginů nebo zkratky. Například, pokud váš plugin nese název “Super Tool”, mohly by názvy funkcí vypadat nějak takto: stool_get_data()、stool_OPTION_KEY Takto.
Dalším, důkladnějším způsobem je použití jmenných prostorů v PHP, které umožňují nejefektivnější izolaci vašeho kódu.
Jak v rámci vývoje doplňků (pluginů) zpracovávat nastavení a možnosti uživatelů?
WordPress doporučuje výrazně používat své API Settings k správě možností pluginů. Toto API se postará o bezpečné ukládání těchto možností. wp_options Zahrnutí ověřování dat (např. pomocí algoritmu CAPTCHA), neověřování dat typu CE, renderování polí a odesílání formulářů je bezpečný a standardizovaný způsob zabezpečení webových aplikací.
Hlavní kroky zahrnují: použití register_setting() Zaregistrujte skupinu možností a použijte ji. add_settings_section() 和 add_settings_field() Přidejte oblasti nastavení a pole a nakonec je použijte na straně klienta (na frontendu). settings_fields() 和 do_settings_sections() Tímto lze vytvořit kompletní formulář pro nastavení. Při ukládání možností použijte… update_option() Funkce.
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.
- 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
- 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í
- Vývoj WordPress pluginů od základů až po pokročilé znalosti: Vytvořte si svůj první vlastní plugin
- Od nuly k jedničce: Kompletní průvodce postupným vývojem vašeho prvního WordPress pluginu