Ovládnutí vývoje pluginů pro WordPress je nezbytnou cestou pro každého vývojáře, který chce rozšířit funkce tohoto systému. Vytvářením vlastních pluginů můžete svým webovým stránkám přidat jedinečné vlastnosti a pracovní postupy a mít plnou kontrolu nad detaily jejich implementace, aniž byste museli spoléhat na předdefinovaná téma nebo kód ostatních. Tento průvodce vás bude systematicky seznamovat se základními koncepty a osvědčenými postupy vývoje pluginů od samého začátku a nakonec vám pomůže osvojené znalosti utvrdit prostřednictvím praktického projektu.
Základy a struktura WordPress pluginů
WordPress plugin je v podstatě jeden nebo více PHP souborů, které jsou uloženy v určitém adresáři ve struktuře WordPress projektu./wp-content/plugins/V adresáři dodržuje určitou strukturu, aby ji WordPress mohl rozpoznat a načíst. Porozumění těmto základům je prvním krokem při vytváření stabilních doplňků (pluginů).
Základní struktura souborů pluginu
Výchozím bodem pluginu je obvykle PHP soubor se stejným názvem jako plugin sám. Například pro plugin s názvem “My First Plugin” může být hlavní soubor nazýván…my-first-plugin.phpNa začátku tohoto souboru musí být obsažen blok komentářů s standardními informacemi o hlavičce pluginu. To je klíčové pro to, aby WordPress rozpoznal metadata pluginu (jako je název, popis, verze, autor).
Doporučujeme k přečtení. Pokročilý průvodce vývojem WordPress pluginů: Od nuly až k vytvoření profesionálních pluginů。
Níže je příklad nejzákladnějšího hlavního souboru pluginu:
<?php
/**
* Plugin Name: My First Plugin
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 这是一个简单的自定义插件,用于演示基础结构。
* Version: 1.0.0
* Author: Your Name
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
} Tento blok kódu definuje informace, které se zobrazí o pluginu v seznamu pluginů v pozadí WordPressu.Text DomainPoužívá se pro internacionalizaci (i18n).if ( ! defined( 'ABSPATH' ) )Tento příkaz je bezpečnostní opatření, které zabrání uživatelům v přímém přístupu k tomuto bezpečnému souboru prostřednictvím URL adresy.
Porozumění oboru působení a životnímu cyklu pluginů
Po aktivaci pluginu je jeho hlavní soubor načten již v rané fázi inicializace WordPressu. To znamená, že máte přístup k klíčovým funkcím a třídám WordPressu v globálním prostoru. Kód pluginu se spouští s každým požadavkem na stránku, a proto je důležité pečlivě sledovat výkon pluginu a vyhnout se provádění náročných operací při každém požadavku.
Dobrou praxí je uzavírat funkční kód do tříd nebo funkcí a spouštět jej v určitých okamžicích pomocí systému hooků v WordPressu, místo aby byl prováděn přímo v globálním rozsahu souboru. Tím je zajištěno, že kód běží pouze v potřebných případech, což zvyšuje efektivitu a kontrolu nad jeho chováním.
Základní principy vývoje: Hooky a filtry
Klíčovou filozofií vývoje pluginů pro WordPress je “mechanismus hooků”. Tento mechanismus umožňuje vašemu pluginu v určitých okamžicích “zapojit se” do základního procesu fungování WordPressu, a tím upravit nebo přidat nové funkce, aniž byste museli měnit samotné základní soubory WordPressu. Hooky se dělí především na dvě typy: akce (Actions) a filtry (Filters).
Doporučujeme k přečtení. Ovládnutí optimalizace výkonu WordPress: Kompletní průvodce od základů po pokročilé techniky。
Použití akčních hooků
Akční háčky vám umožňují vložit další kód v určitém okamžiku během spuštění WordPressu. Například při zveřejnění článku nebo při inicializaci menu v administraci. Chcete-li akční háčky použít, musíte…add_action()Funkce.
Pokud chcete po zveřejnění článku poslat e-mail administrátorovi, můžete napsat následovně:
function myplugin_on_publish_post( $post_id ) {
$post = get_post( $post_id );
$admin_email = get_option( 'admin_email' );
wp_mail( $admin_email, '新文章已发布', '文章“' . $post->post_title . '”刚刚发布。' );
}
add_action( 'publish_post', 'myplugin_on_publish_post' ); V tomto příkladu…publish_postJedná se o akční hook (“action hook”), který se spustí v WordPressu, jakmile se stav článku změní na „Zveřejněno“ („Published“). Poté se provedou akce, které jsme přiřadili k tomuto hooku.myplugin_on_publish_postFunkce.
Použití filtrovacích hooků
Filtrovací háčky slouží k úpravě dat. Než jsou data použita (např. uložena do databáze nebo zobrazena na stránce), WordPress je předá skrze filtry. Vaše plugin může tato data zachytit, upravit je a poté je znovu vrátit. K tomu je potřeba použít vhodné funkce a konstrukce v rámci WordPressu.add_filter()Funkce.
Klasickým příkladem je úprava obsahu článku na konci, při které se automaticky přidává pasáž o autorských právech:
function myplugin_add_copyright_to_content( $content ) {
if ( is_single() ) {
$copyright_text = '<p><small>© 2026 Všechna práva vyhrazena.</small></p>';
$content .= $copyright_text;
}
return $content;
}
add_filter( 'the_content', 'myplugin_add_copyright_to_content' ); Zde,the_contentJedná se o filtrový hook, který předává obsah článku.$contentNaše funkce přijímá obsah, přidá k němu určitý text a poté vrací upravený obsah.
Doporučujeme k přečtení. Od nuly: Základní architektura vývoje temat pro WordPress。
Možnosti pluginů a ukládání dat
Většina pluginů potřebuje ukládat uživatelská nastavení nebo data. WordPress nabízí několik způsobů k tomu: Option API slouží k ukládání jednoduchých klíčovo-hodnotových párů, Setting API umožňuje vytvářet standardizované stránky pro úpravy nastavení v administraci, a přizpůsobené databázové tabulky slouží k ukládání složitějších datových struktur.
Použití API pro volby a nastavení
Pro konfiguraci pluginů se nejčastěji používá API možností (option API). Můžete jej využít k nastavení různých parametrů a funkcí pluginů.add_option()、get_option()和update_option()Slouží k správě dat.
Avšak profesionálnějším způsobem je využití nastavení API, které za vás zpracuje komplikované úkoly spojené s vytvářením formulářů na stránce s možnostmi volby, bezpečnostním ověřením (Nonce) a ukládáním dat. Budete muset tuto API používat.register_setting()、add_settings_section()和add_settings_field()Použijte funkce jako `get_options`, `add_options`, `update_options` a další, abyste vytvořili stránku nastavení v souladu se stylem WordPress administrace.
Vytvoření vlastní databázové tabulky
Když je potřeba uložit velké množství strukturovaných dat (např. objednávky, záznamy o odeslání formulářů), je nutné vytvořit vlastní databázové tabulky. To se obvykle provádí při aktivaci pluginu.dbDelta()Funkce slouží k bezpečnému vytvoření nebo aktualizaci struktury tabulky.
Pro to potřebujete kód pro vytvoření tabulky připojit („mount“) k…register_activation_hookNa tomto speciálním háčku se nachází akční hook – tento hook se spustí pouze jednou, a to tehdy, když je váš plugin aktivován.
register_activation_hook( __FILE__, 'myplugin_create_custom_table' );
function myplugin_create_custom_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'myplugin_data';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
email varchar(100) 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 );
} Praktický projekt: Vytvoření jednoduchého doplňku pro správu seznamů úkolů
Spojme tedy všechny tyto znalosti dohromady a vytvořme jednoduchý plugin pro správu seznamů úkolů v pozadí (backend). Tento plugin přidá do administrace WordPressu nový menuový příkaz, který umožní administrátorům přidávat, prohlížet a označovat úkoly jako dokončené.
Vytvoření hlavního souboru pluginu a menu
Nejprve vytvořte hlavní soubor pluginu.wp-todo-list.phpPřidejte také informace o hlavičce pluginu. Poté použijte…add_action( ‘admin_menu’, … )Za pomocí „hooků“ lze přidat stránku správního menu.
// 在插件主文件中
function mytodo_add_admin_menu() {
add_menu_page(
'待办事项', // 页面标题
'待办事项', // 菜单标题
'manage_options', // 权限
'wp-todo-list', // 菜单slug
'mytodo_display_page', // 显示页面的回调函数
'dashicons-editor-ul', // 图标
6 // 位置
);
}
add_action( 'admin_menu', 'mytodo_add_admin_menu' );
// 显示页面的回调函数
function mytodo_display_page() {
// 页面HTML和逻辑将在这里处理
echo '<div class="wrap"><h1>Moje úkoly k dokončení</h1></div>';
} Implementace funkcí přidávání a zobrazování dat
Potřebujeme formulář pro přidávání nových úkolů a seznam, který je zobrazí. Pro jednoduchost použijeme Option API k ukládání pole úkolů.mytodo_display_page()Ve funkci zpracováváme odeslání formuláře a ukládáme data do příslušných položek.
function mytodo_display_page() {
echo '<div class="wrap"><h1>Moje úkoly k dokončení</h1>';
// 处理表单提交
if ( isset( $_POST['new_todo'] ) && ! empty( $_POST['new_todo'] ) ) {
$todos = get_option( 'mytodo_list', array() );
$new_todo = sanitize_text_field( $_POST['new_todo'] );
$todos[] = array( 'task' => $new_todo, 'done' => false );
update_option( 'mytodo_list', $todos );
}
// 显示表单
echo '<form method="POST" action="">'; echo '
echo '<input type="text" name="new_todo" placeholder="Zadejte nový úkol….">'; echo '
echo '<input type="submit" value="Přidat" class="button button-primary">'; echo '
echo '<input type="hidden" name="trp-form-language" value="cs"/></form>';
// 显示列表
$todos = get_option( 'mytodo_list', array() );
if ( ! empty( $todos ) ) {
echo '<ul style="margin-top: 20px;">';
foreach ( $todos as $index => $todo_item ) {
$status = $todo_item['done'] ? '(已完成)' : '(待办)';
echo '<li>'`. esc_html($todo_item['task'])`. ` ` . $status`. `'</li>';
}
echo '</ul>';
}
echo '</div>';
} Tento jednoduchý příklad ukazuje základní postup vývoje pluginů: vytvoření uživatelského rozhraní pro správu, zpracování uživatelských vstupů, bezpečné ukládání a vyhledávání dat. Při skutečném vývoji budete také potřebovat přidat funkce pro označování dokončených úkolů, jejich odstraňování, AJAX operace, stejně jako pokročilejší způsoby ověření bezpečnosti (např. pomocí hodnot typu Nonce) a kontrolu oprávnění.
Závěr
Vývoj pluginů pro WordPress je proces, při kterém se kreativní nápady proměňují v konkrétní funkce. Jádrem tohoto procesu je pochopení a obratné využívání systému hooků. Začínáte definováním jasně strukturovaného souborového uspořádání pluginu, poté pomocí akčních a filtrovacích hooků přesně zasahujete do pracovního toku WordPressu, spravujete data prostřednictvím API pro nastavení (options API) nebo vlastních tabulek, a nakonec vytvoříte plugin s kompletními funkcemi a přívětivým uživatelským rozhraním. Dodržováním osvědčených postupů z hlediska bezpečnosti a výkonnosti může váš plugin stabilně a efektivně sloužit nečetným webovým stránkám vytvořeným pomocí WordPressu.
Časté dotazy
Jaké předpokládané znalosti jsou potřebné k vývoji pluginu pro WordPress?
Potřebujete mít solidní základy programování v PHP. Pochopení HTML, CSS a JavaScriptu (zejména jQuery) bude také velmi užitečné. Znalost konceptů objektového programování (OOP) vám umožní, aby byl kód vašich pluginů strukturovanější a snazší na údržbu. Samozřejmě je nezbytné porozumět základním principům fungování WordPressu.
Jak zajistit, aby plugin, který jsem vyvinul, byl bezpečný?
Bezpečnost je při vývoji doplňků nejdůležitějším aspektem. Vždy provádějte ověřování a čištění uživatelského vstupu a používejte vhodné způsoby k zabezpečení systému.sanitize_text_field()、esc_html()、wp_kses()Využívejte funkce poskytované WordPressem. Při zpracovávání formulářů je nezbytné používat WordPressův mechanismus nonce (číslo použité pouze jednou) k zabránění útokům typu CSRF. Pro operace s databází použijte…$wpdbTřídy a jejich přípravné příkazy (Classes and their preparation statements)prepare()Použijte vhodné metody k prevenci SQL injection. Nezapomeňte je také aplikovat.current_user_can()Provést kontrolu schopností.
Jak by mělo být implementováno internacionalizování (i18n) v pluginu?
WordPress využívá technologii GNU gettext pro internacionalizaci. Ve textových polích svého pluginu (definovaných v části hlavy pluginu) musíte všechny textové stránky, které je třeba přeložit, označit speciálními značkami.()或_e()Funkční obaly (function wrappers). Například:echo ( ‘Hello World’, ‘my-plugin-textdomain’ )Poté použijte nástroj, jako je Poedit, k vytvoření požadovaného obsahu..potŠablony souborů – překladatelé mohou vytvořit odpovídající verze těchto souborů..po和.moJazykové soubory. Umístěte je do složky, která obsahuje plugin./languages/Může být umístěn přímo v adresáři.
Jak bych měl ladit a testovat svůj plugin?
Nejprve se ujistěte, že ve vašem…wp-config.phpVe souboru je funkce aktivována.WP_DEBUG和WP_DEBUG_LOGTímto budou chybové informace zaznamenány do…/wp-content/debug.logVe souboru. Použijte to.error_log()Funkce vypisuje vlastní laděcí informace. Pro PHP kód lze použít profesionální nástroje, jako je Xdebug. Kromě toho je před vydáním nezbytné provést testy kompatibility na různých verzích PHP (např. 7.4, 8.0, 8.1) a různých verzích WordPressu, a ujistit se, že váš plugin nebude mít konflikty s běžnými tematy nebo jinými pluginy.
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.
- Proč používat WooCommerce k vytvoření online obchodu?
- Proč zvolit WordPress: Deset hlavních výhod open-source redakčního systému (CMS)
- Ovládněte WooCommerce během deseti minut: Průvodce výstavbou e-shopu od základů až po zisk
- Kompletní průvodce WooCommerce: Návod od instalace po pokročilé konfigurace e-shopu pro začátečníky a pokročilé uživatele
- Co je WordPress? Představení komplexního systému pro správu obsahu