Proč se rozhodnout vytvořit vlastní plugin pro WordPress?
WordPress se stal nejpopulárnějším systémem pro správu obsahu na světě díky své výkonné architektuře plug-inů. Plug-iny umožňují vývojářům přidávat webovým stránkám téměř jakékoli funkce, aniž by bylo nutné měnit samotný základní kód. Vývojem vlastních plug-inů můžete splnit velmi specifické požadavky, řešit konkrétní obchodní problémy, zlepšit výkonnost webu a dokonce své řešení zkomercializovat a sdílet je v komunitě nebo na trhu. Ovládnutí dovedností vývoje plug-inů znamená, že můžete hluboce ovlivňovat chování WordPressu a přejít z role pasivního uživatele temát na aktivního tvůrce funkcí.
Porozumění architektuře pluginů v WordPressu je prvním krokem. Všechny pluginy se nacházejí…/wp-content/plugins/V adresáři má každý plugin svůj vlastní složku. WordPress rozpoznává a načítá pluginy tak, že skenuje hlavní PHP soubor v tomto adresáři. Tento modulární design zajišťuje izolaci funkcí, bezpečnost a snadnou údržbu.
Vytvořte si svůj první WordPress plugin.
Základní struktura souborů pro vytvoření pluginu
Nejjednodušší WordPress plugin vyžaduje alespoň jednu hlavní PHP soubor. Nejprve vytvoříme soubor s názvem…my-first-pluginPřejděte do dané složky a v ní vytvořte hlavní soubor.my-first-plugin.phpPříspěvkové poznámky v hlavičce tohoto souboru jsou nezbytné, protože slouží k poskytnutí metadat o pluginu systému WordPress.
Doporučujeme k přečtení. Kompletní průvodce vývojem WordPress pluginů: Vytvoření vlastních funkcí od nuly。
<?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
*/ Umístěte složku obsahující výše uvedený kód do…/wp-content/plugins/Poté přejděte na stránku “Příslušenství” (Plugins) v administraci WordPress a tam uvidíte a aktivujete tento plugin. I když zatím nemá žádné funkce, úspěšně jste vytvořili kompatibilní rámec pro pluginy.
Přidejte do pluginu jednoduchou funkci.
Přidejme tomuto pluginu základní funkci: automatické přidávání vlastního textu na konci obsahu článku. K tomu budeme potřebovat využít filtrovací háčky (filter hooks) v WordPressu.the_content。
在my-first-plugin.phpPod hlavičkovými poznámkami přidejte následující kód:
// 在文章内容后添加自定义文本
function myfp_add_footer_text( $content ) {
// 确保只在主循环的单篇文章页面添加
if ( is_single() && in_the_loop() && is_main_query() ) {
$footer_text = '<p><em>Děkujeme, že jste si tento článek přečetli. Přináší vám ho “Můj první plugin”.</em></p>';
$content .= $footer_text;
}
return $content;
}
add_filter( 'the_content', 'myfp_add_footer_text' ); Tento kód definuje funkci.myfp_add_footer_textPřijímá obsah článku.$contentJako parametr. Uvnitř funkce se to provádí pomocí podmínkových značek.is_single()Provádějte tedy posouzení a ujistěte se, že text bude přidán pouze na stránce konkrétního článku. Nakonec použijte…add_filter()Funkce nám umožňuje připojit naši vlastní definovanou funkci („custom function“) k nějakému systému nebo službě.the_contentNa tomto filtru: Po uložení souboru a prohlédnutí libovolného článku zjistíte, že dole se již objevil text, který jsme přidali.
Dodržovat osvědčené postupy při vývoji pluginů pro WordPress
Zajistěte bezpečnost kódu a ověřování dat.
Při zpracovávání uživatelských vstupních nebo výstupních dat v pluginu je bezpečnost nejdůležitějším aspektem. WordPress poskytuje mnoho funkcí, které pomáhají vývojářům provádět ověřování dat, jejich escapeování a čištění. Nikdy nesmíte data používat přímo.$_GET、$_POST或$_REQUESTProměnné obsažené v tomto textu.
Doporučujeme k přečtení. Podrobný rozbor vývoje pluginů pro WordPress: Vytvoření vlastních funkcí od nuly。
Například, když z parametrů URL získáte ID a použijete ho pro dotaz do databáze, měli byste postupovat následovně:
// 安全地获取并验证一个URL整数参数
$item_id = isset( $_GET['id'] ) ? absint( $_GET['id'] ) : 0;
if ( $item_id > 0 ) {
// 使用 $item_id 进行安全查询
global $wpdb;
$query = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}my_table WHERE id = %d", $item_id );
$result = $wpdb->get_row( $query );
} Zde,absint()Funkce nuceně převede vstup na nezáporné celé číslo.$wpdb->prepare()Tato metoda slouží k bezpečné přípravě SQL dotazů, aby se zabránilo útokům typu SQL injection. U jakýchkoli dynamických dat, která jsou zobrazena na HTML stránkách, by měla být použita odpovídající bezpečnostní opatření.esc_html()、esc_attr()或wp_kses_post()Použijte funkce jako escape() k odstranění speciálních znaků.
Implementace podpory překladu a internacionalizace
Aby váš plugin mohl být používán uživateli po celém světě, je nutné zajistit internacionalizaci (i18n). To znamená, že všechny textové stránky určené pro uživatele musí být zabaleny pomocí funkcí pro překlad v WordPressu.
Změňte kód, který předtím přidával text, tak aby podporoval překlad.
function myfp_add_footer_text( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
// 使用 __() 函数使字符串可翻译
$footer_text = sprintf(
'<p><em>%s</em></p>',
esc_html__( '感谢阅读本文,由“我的第一个插件”为您呈现。', 'my-first-plugin' )
);
$content .= $footer_text;
}
return $content;
} My používámeesc_html__( ‘字符串’, ‘text-domain’ )Použijte tento formát k zabalení textu. Mezitím…my-first-pluginJedná se o textové pole (Text Domain), které je definováno v části hlavy pluginu. To zajišťuje nezávislost překladů. Následně mohou překladatelé tuto funkci využít..potSoubor obsahuje verze vašeho pluginu v různých jazycích..moPřekládání dokumentů.
Napsání udržovatelného kódu a využívání objektově orientovaného programování
Pro jednoduché pluginy může být postačující použít procedurální programování. Pro pluginy s komplexními funkcemi však může objektově orientované programování (OOP) poskytnout lepší organizaci kódu, stejně jako zvýšit čitelnost a udržovatelnost.
Doporučujeme k přečtení. Úplný průvodce vývojem pluginů pro WordPress: od začátku až po praktické využití při vytváření vlastních funkcí.。
Níže je příklad toho, jak byl náš plugin rekonstruován pomocí tříd:
class My_First_Plugin {
/**
* 构造函数,用于初始化动作和过滤器
*/
public function __construct() {
add_action( 'init', array( $this, 'load_textdomain' ) );
add_filter( 'the_content', array( $this, 'add_footer_to_content' ) );
}
/**
* 加载插件文本域用于国际化
*/
public function load_textdomain() {
load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}
/**
* 在文章内容后添加文本
*/
public function add_footer_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$footer_text = sprintf(
'<p><em>%s</em></p>',
esc_html__( '感谢阅读本文,由“我的第一个插件”为您呈现。', 'my-first-plugin' )
);
$content .= $footer_text;
}
return $content;
}
}
// 初始化插件类
new My_First_Plugin(); Zašifrováním funkcí do…My_First_PluginV těchto třídách je struktura kódu jasnější, což eliminuje problémy spojené s používáním funkcí z globálního jmenného prostoru a usnadňuje tak rozšiřování funkcionalit.
Přidejte pro plugin správní rozhraní a možnosti nastavení.
Vytvořte stránku s nabídkou správního menu a možností.
Mnoho pluginů vyžaduje, aby byly uživatelům k dispozici možnosti konfigurace. WordPress poskytuje API pro přidávání menu a podmenu na pozadí (v backendu). Doporučujeme jej používat.add_options_page()Funkce přidává nastavovací stránky pluginu do hlavního menu “Nastavení”, což je v souladu se standardy uživatelského prostředí WordPress.
class My_First_Plugin_Admin {
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', // 所需权限
'myfp-settings', // 菜单slug
array( $this, 'render_settings_page' ) // 回调函数
);
}
public function register_settings() {
register_setting( 'myfp_settings_group', 'myfp_footer_text' );
add_settings_section( 'myfp_main_section', '主要设置', null, 'myfp-settings' );
add_settings_field( 'myfp_text_field', '页脚文本', array( $this, 'render_text_field' ), 'myfp-settings', 'myfp_main_section' );
}
public function render_text_field() {
$value = get_option( 'myfp_footer_text', '默认的感谢文本。' );
echo '<input type="text" name="myfp_footer_text" value="' . esc_attr( $value ) . '" class="regular-text" />';
}
public function render_settings_page() {
?>
<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
settings_fields( 'myfp_settings_group' );
do_settings_sections( 'myfp-settings' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="cs"/></form>
</div>
<?php
}
}
// 仅在管理后台加载管理类
if ( is_admin() ) {
new My_First_Plugin_Admin();
} Propojit funkce pluginu s možnostmi nastavení
Po vytvoření stránky se nastaveními musíme upravit funkce na straně klienta (frontend), aby používaly hodnoty volitelných parametrů uložené uživatelem, místo pevně zakódovaného textu.
Před aktualizacíMy_First_Pluginwithin the classadd_footer_to_contentMetoda:
public function add_footer_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
// 从数据库选项获取用户自定义的文本,如果不存在则使用默认翻译
$saved_text = get_option( 'myfp_footer_text' );
$footer_text = ! empty( $saved_text ) ? esc_html( $saved_text ) : esc_html__( '感谢阅读本文,由“我的第一个插件”为您呈现。', 'my-first-plugin' );
$content .= sprintf( '<p><em>%s</em></p>', $footer_text );
}
return $content;
} Nyní lze text v podkladové části pluginu („footer text“) přizpůsobit pomocí stránky pro nastavení v pozadí („backend settings page“), což umožňuje oddělení funkčnosti od konfigurace a výrazně zvyšuje flexibilitu pluginu.
Závěr
Vývoj pluginů pro WordPress je proces, který začíná pochopením základní architektury systému a postupně se rozvíjí směrem k zabezpečení, internacionalizaci, organizaci kódu a interakci s uživateli. Klíčovým aspektem je dodržování kódovacích standardů WordPressu a osvědčených postupů komunity, včetně využívání poskytovaného systému „hooků“ (Actions a Filters), zajištění bezpečnosti dat, podpory více jazyků a vytváření přehledného uživatelského rozhraní. Začněte vytvořením jednoduchého funkčního pluginu, poté postupně přidejte možnosti nastavení a přepracujte ho na objektově orientovanou strukturu kódu. Díky tomu systematicky zvládnete celý proces vývoje pluginů. Pamatujte, že kvalitní plugin není pouze takový, který funguje, ale také takový, který je bezpečný, efektivní, snadno udržovatelný a přizpůsobený potřebám různých jazykových prostředí.
Časté dotazy
K vývoji pluginů pro WordPress jsou potřebné následující předpokládané znalosti:
Potřebujete mít solidní základy programování v PHP, protože pluginy jsou většinou napsány v PHP. Kromě toho byste měli mít základní znalosti HTML, CSS a JavaScriptu, které jsou nutné pro vytváření front-end uživatelského rozhraní a interakcí. Pochopení základních konceptů WordPressu, jako jsou tématy, typy článků, kategorie, metadata a zejména mechanismy hooků (akce a filtry), je klíčové pro úspěšné vývoj pluginů. Znalost základních operací s databází MySQL je také užitečná při práci s komplexními daty.
Jak ladit WordPress plugin, který právě vyvíjíte?
Nejprve se ujistěte, že…wp-config.phpAktivováno v souboru.WP_DEBUG和WP_DEBUG_LOGTo zaznamená chyby a varování PHP do…/wp-content/debug.logVe souboru se musí zabránit tomu, aby chybové zprávy byly přímo zobrazeny uživateli. Dále je možné to využít k…error_log()Funkce vypisuje vlastní laděcí informace do stejného souboru protokolů. Pro kontrolu hodnot proměnných se používá…print_r()或var_dump()Funkce, a to ve spojení s…echo ‘’;Formátujte výstup, ale pamatujte, že to dělejte pouze v rozvojovém prostředí. K ladění JavaScriptu a AJAX požadavků používejte panely Console a Network v nástrojích pro vývojáře prohlížeče (stiskněte klávesu F12).
Jak může můj plugin interagovat s třetími službami nebo API?
Interakce s třetími API je běžným způsobem rozšíření funkcí pluginů. V WordPressu se doporučuje používat vestavěný HTTP API.wp_remote_get(), wp_remote_post()Pro zahájení požadavku se používá protokol HTTPS, protože zajišťuje kompatibilitu, řešení problémů s časovými limity a zabezpečení dat. Při přenosu citlivých údajů je nutné vždy používat protokol HTTPS. Pro zpracování odpovědi z API je obvykle nutné dekódovat data ve formátu JSON (pomocí příslušných nástrojů nebo knihoven).json_decode()Zpracovávejte data ve formátu JSON nebo XML a zajistěte správné zpracování chyb, např. kontrolou stavových kódů HTTP a chybových kódů vrácených API. Doporučujeme uložit citlivé informace, jako je klíč API, do nastavení pluginu, místo jejich hardcodování do souborů.
Jak odeslat svůj bezplatný plugin do oficiálního adresáře pluginů WordPress?
Nejprve se ujistěte, že váš plugin plně dodržuje licenci GPL, že je kvalitní z hlediska kódu a že neobsahuje žádné škodlivé nebo propagační odkazy. Vytvořte si účet na WordPress.org a poté navštivte sekci “Vývojáři” a odevzdejte svůj plugin. Je potřeba poskytnout stabilní komprimovaný soubor pluginu ve formátu ZIP, který obsahuje standardní informace o pluginu, stejně jako další potřebné soubory.readme.txtSoubor popisující váš plugin v určitém formátu, spolu s volitelnými snímky obrazovky a ikonami. Po odeslání tohoto souboru ho posoudí tým pro kontrolu pluginů, což může trvat několik týdnů. Po úspěšné kontrole obdržíte oficiální SVN repozitář, ve kterém bude váš kód uložen. Uživatelé budou moci váš plugin vyhledávat a instalovat přímo z administrace WordPressu.
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.
- Doporučení 10 užitečných pluginů pro WordPress, které výrazně zlepší výkon a bezpečnost vašeho webu
- Doporučení 10 nezbytných pluginů pro zlepšení výkonu a bezpečnosti webových stránek WordPress
- Kompletní průvodce konfigurací a používáním pluginů pro WooCommerce: Vytvoření e-shopu od nuly
- Předmluva: Proč zvolit WordPress pro vývoj
- Zrychlete své webové stránky: Kompletní příručka k využití CDN a osvědčených postupů