Kompletní průvodce vývojem WordPress pluginů: Od základů po pokročilé praktické návody

Čtení za 4 minuty.
2026-03-14
2026-06-04
2,206
Získávám provize, když nakupujete prostřednictvím níže uvedených odkazů, aniž by vás to něco stálo navíc.

Nastavení vývojového prostředí pro pluginy WordPressu.

Pro začátek vývoje pluginů pro WordPress je nejprve nutné vytvořit profesionální lokální vývojové prostředí. To vám umožní provádět testy bez ovlivnění webové stránky online a zároveň výrazně zvýší efektivitu vývoje. Typické vývojové prostředí zahrnuje software pro lokální server (např. XAMPP, MAMP nebo Local by Flywheel), editory kódu (např. VS Code nebo PHPStorm) a čistou instalaci WordPressu.

Hlavním vývojovým souborem je hlavní soubor vašeho pluginu, jehož název se řídí určitými pravidly. Hlavní soubor pluginu je obvykle soubor v formátu PHP, například… my-first-plugin.phpTento soubor musí obsahovat specifické poznámky v hlavičce pluginu, pomocí kterých WordPress rozpozná váš plugin. Níže je uveden příklad nejzákladnější hlavičky pluginu:

<?php
/**
 * Plugin Name: 我的第一个插件
 * Plugin URI:  https://example.com/my-first-plugin
 * Description: 这是一个简短的插件描述,用于在后台插件列表中显示。
 * Version:     1.0.0
 * Author:      你的名字
 * Author URI:  https://example.com
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 */

Umístěte soubor obsahující výše uvedený kód do adresáře instalace WordPress. /wp-content/plugins/ V té složce najdete potřebné soubory a poté přejděte na stránku “Příslušenství” (Plugins) v administraci WordPressu. Tam uvidíte svůj plugin a můžete ho aktivovat. I když zatím nemá žádné funkce, to znamená, že bylo úspěšně vytvořeno vývojové prostředí.

Doporučujeme k přečtení. Ovládněte vývoj pluginů pro WordPress: Postavte si svůj první vlastní plugin od nuly

Porozumění struktuře adresáře s pluginy

Jak se funkce pluginů stávají složitějšími, je obtížné udržovat veškerý kód v jediném hlavním souboru. Proto je zásadní vytvořit jasnou strukturu souborů a adresářů. Dobře strukturovaný adresář s pluginy usnadňuje nejen spolupráci týmu, ale také další rozšiřování funkcí.

UltaHost – hosting služby pro weby postavené na platformě WordPress
Záruka vrácení peněz do 30 dnů, neomezený šířka pásma a databáze, bezplatná ochrana proti DDoS útokům. Sleva 501 TP4T při nákupu na 3 roky.

Rekomendovaná struktura adresáře pro pluginy střední velikosti je následující:
- my-plugin/ (Katalog hlavní složky pluginu)
- my-plugin.php (Hlavní soubor pluginu, zodpovědný za spouštění a základní definice)
- uninstall.php (Čistící skript spuštěný při odinstalaci doplňku)
- includes/ (Skladuje soubory obsahující klíčové funkce nebo třídy)
- admin/ (Kód související s administrátorským rozhraním na pozadí)
- public/ (Ukládá se kód určený k použití na straně uživatelů.)
- assets/ (Ukládá se CSS, JavaScript, obrázky a další statické zdroje)
- languages/ (Skladují se soubory s internacionalizovanými překlady: .pot/.mo)

V hlavním souboru my-plugin.php V tomto kontextu obvykle definujete konstanty týkající se pluginů (jako je cesta k pluginu a jeho URL), a poté je používáte. require_once Příkazy podle potřeby zavádějí funkční soubory z jiných adresářů. Tento modulární přístup umožňuje účinné a organizované správě kódu.

Klíčový mechanismus pluginů: Hooky a filtry

Klíčovou filozofií vývoje pluginů pro WordPress je “hooking”. Mechanismus hooking vám umožňuje vložit svůj vlastní kód v určité časové momenty, aniž byste museli měnit základní kód WordPressu, nebo upravovat data výstupu jiných funkcí. 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 při zveřejnění článku, při přihlášení uživatele nebo při načtení backendového menu. add_action() Funkce umožňuje “připojit” vaši callback funkci k určenému akčnímu hooku.

Doporučujeme k přečtení. Ovládnutí vývoje pluginů pro WordPress: Postavte si svůj první rozšiřující modul od nuly

Filtrovací háčky vám umožňují upravovat data. Během zpracovatelského procesu v WordPressu procházejí data (jako je obsah článků, nadpisy, úryvky) řadou filtrů, než jsou uložena do databáze nebo zobrazena v prohlížeči. Můžete je tedy využít k úpravám před jejich uložením. add_filter() Funkce slouží k úpravě těchto dat.

Jak přidat akční hook?

Předpokládejme, že chcete automaticky přidávat na konci každého článku prohlášení o autorských právech. To vyžaduje provedení určité akce po renderování obsahu článku, ale přesněji řečeno jde o úpravu samotného obsahu článku, a proto je vhodnější použít filtr. Pro demonstraci tohoto „akčního hooku“ však zvážíme odeslání e-mailu administrátorovi při zveřejnění článku.

Nejprve potřebujete vytvořit funkci na zpáteční volání (callback function), například: myplugin_notify_admin_on_publishPoté použijte… add_action() Funkce to nakonfiguruje tak, aby bylo možné to připojit („mount“). publish_post V tomto kroku…

Shared hosting na hosting.com
Vysoký výkon, vybavený procesorem AMD EPYC, úložištěm NVMe SSD a LiteSpeedem, nepřetržitá interní podpora odborníků 24 hodin denně a 7 dní v týdnu, pokročilá bezpečnostní opatření včetně SSL, ochrany proti útokům hrubou silou, malwaru a DDoS, úspora až 731 TB/měsíc.
function myplugin_notify_admin_on_publish( $post_id, $post ) {
    // 获取管理员邮箱
    $admin_email = get_option( 'admin_email' );
    $subject = '新文章已发布:' . $post->post_title;
    $message = '您网站上的文章“' . $post->post_title . '”刚刚被发布。';
    // 发送邮件
    wp_mail( $admin_email, $subject, $message );
}
// 将函数挂载到 publish_post 动作钩子,优先级为10,接受2个参数
add_action( 'publish_post', 'myplugin_notify_admin_on_publish', 10, 2 );

Jak přidat filtrovací hook?

Nyní se pokusíme dosáhnout původního cíle: přidat informace o autorských právech na konci obsahu článku. K tomu budeme muset provést filtraci. the_content Tyto data.

function myplugin_add_copyright_to_content( $content ) {
    // 确保只在网站前端的单篇文章页面执行
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $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', 'myplugin_add_copyright_to_content' );

Porozumění a obratné používání „hooků“ je klíčem k odemčení neomezených možností přizpůsobení WordPressu.

Vytvořit stránku pro správu pluginů v administraci

Mnoho pluginů vyžaduje, aby byly uživatelům poskytnuty možnosti konfigurace, což se obvykle provádí prostřednictvím stránek správního menu v pozadí WordPressu. WordPress poskytuje sadu funkcí pro přidávání hlavních položek menu nebo podmenu a pro zobrazení příslušných stránek nastavení.

Doporučujeme k přečtení. Naučte se vývoj WordPress pluginů od základů: Vytvořte si svou první vlastní funkci

Přidejte vrchní správní menu.

Použití add_menu_page() Funkce může vytvořit pro váš plugin samostatný položku v pozadí menu. Tato funkce vyžaduje více parametrů, včetně názvu stránky, názvu menu, uživatelských oprávnění, přezdívky menu a funkce na zpětnou volání.

Následující kód ukazuje, jak přidat jednoduchou stránku s hlavním menu:

Shared hosting od InterServeru
Sdílený hosting za 1 TB + 5 TB měsíčně za 2,50 USD, slevový kód tryinterserver pro první měsíc za 1 TB + 5 TB za 0,1 USD, a 461 skriptů cloudových aplikací k jednoduché instalaci.
function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',       // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',    // 所需权限(管理员)
        'myplugin-settings', // 菜单别名(slug)
        'myplugin_render_settings_page', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标(使用Dashicons)
        30                   // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 渲染设置页面的回调函数
function myplugin_render_settings_page() {
    ?&gt;
    <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 和 register_setting)
            settings_fields( 'myplugin_options' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="cs"/></form>
    </div>
    <br />&lt;?php
}

Udělení pouze stránek nestačí; obvykle je potřeba na těchto stránkách přidat pole nastavení, která lze uložit. K tomu je nutné využít API pro nastavení (Settings API) WordPressu, které umožňuje bezpečné registrování, ověřování a ukládání těchto nastavení.

Použijte API pro nastavení registračních možností.

Nastavení API poskytuje standardní a bezpečný způsob vytváření formulářů obsahujících pole jako jsou textová pole, políčka pro zaškrtnutí atd., a automatické ukládání dat do WordPressu. wp_options V tabulce dat.

Nejprve si musíte zaregistrovat možnost nastavení, poté přidat oblast nastavení a příslušné pole.

function myplugin_settings_init() {
    // 注册一个新设置项 “myplugin_options”
    register_setting(
        'myplugin_options', // 选项组名
        'myplugin_settings', // 存储在wp_options表中的option_name
        'myplugin_sanitize_callback' // 可选的清理回调函数
    );

// 在页面 “myplugin-settings” 上添加一个区域
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_callback',
        'myplugin-settings'
    );

// 向该区域添加一个字段
    add_settings_field(
        'myplugin_field_footer_text',
        '页脚文本',
        'myplugin_field_footer_text_callback',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_footer_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

// 字段渲染回调函数
function myplugin_field_footer_text_callback() {
    $options = get_option( 'myplugin_settings' );
    $value = $options['footer_text'] ?? ''; // PHP 7.0+ 空合并运算符
    echo '<input type="text" id="myplugin_field_footer_text" name="myplugin_settings[footer_text]" value="' . esc_attr( $value ) . '" class="regular-text" />';
}

Zadní stránky vytvořené tímto způsobem mají svou datovou validaci, ukládání a bezpečnost zajištěnou přímo jádrem WordPressu, což představuje nejlepší postup při vývoji rozhraní pro správu pluginů.

Bezpečnost pluginů a osvědčené postupy

Vytvořit populární plugin znamená nejen zajistit, aby byl funkčně vybavený, ale také aby byl bezpečný, efektivní a snadno udržovatelný. Dodržování bezpečnostních standardů při kódování je primární povinností při ochraně webových stránek uživatelů před útoky.

Data validation, cleaning, and escaping

Toto jsou tři obranné linie WordPressu. Stručně řečeno: validace – kontrola vstupních dat, zda odpovídají očekávanému formátu (například zda jde o e-mailovou adresu); sanitizace – odstranění nebezpečných nebo nelegálních částí dat před jejich uložením do databáze; a escaping – zajištění toho, aby data v HTML, JavaScriptu nebo adresách URL nebyla nesprávně interpretována jako spustitelný kód při jejich odeslání do prohlížeče.

  • Verifikace: Použití funkcí, jako např. is_email(), absint()
  • Úklid: Použijte funkce jako… sanitize_text_field(), sanitize_email(), wp_kses_post()(Používá se k povolení určitého obsahu HTML.)
  • Escaping: Použijte funkce jako… esc_html()(Vyjde do HTML elementu:), esc_url()(Vyjde do atributu URL), esc_attr()(Vyjde do HTML atributů):, wp_kses()(Selektivní escape.)

Nikdy nevěřte vstupním údajům uživatelů. Při přijímání dat (např. z…) $_POST$_GETJe nutné provést úklid dat a při výstupu dat je nutné provést jejich escapeování.

Implementace bezpečného AJAX endpointu

Funkce AJAX je ve pluginch velmi běžná. WordPress ji nabízí. wp_ajax_{action}wp_ajax_nopriv_{action} Klíčem k bezpečnosti při zpracování AJAX požadavků jsou kontroly oprávnění (nonce) a schopností uživatele.

// 为登录用户添加AJAX处理
add_action( 'wp_ajax_myplugin_action', 'myplugin_handle_ajax_request' );
// 如果希望未登录用户也能访问,则需额外添加(慎用)
// add_action( 'wp_ajax_nopriv_myplugin_action', 'myplugin_handle_ajax_request' );

function myplugin_handle_ajax_request() {
    // 1. 检查Nonce(防止跨站请求伪造)
    check_ajax_referer( 'myplugin_secure_nonce', 'security' );

// 2. 检查用户权限(例如,只有管理员才能执行此操作)
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( '权限不足', 403 );
    }

// 3. 获取并清理输入数据
    $some_data = sanitize_text_field( $_POST['some_data'] ?? '' );

// 4. 处理业务逻辑...
    $result = [ 'success' => true, 'message' => '处理成功' ];

// 5. 返回JSON响应
    wp_send_json( $result );
}

Při odesílání požadavků v front-end JavaScriptu je nutné předat hodnotu „nonce“ spolu s ostatními potřebnými daty. wp_localize_script Předej to dál.

Příprava internacionalizace pluginu

Aby váš plugin mohl být používán uživateli po celém světě, je nutné zajistit jeho internacionalizaci (i18n). To znamená, že všechny textové stránky určené pro uživatele nesmí být přímo zakódovány do kódu, ale musí být obaleny pomocí funkcí pro překlad v WordPressu.

Nejčastěji používaná funkce je… __()(Obtained translated string) A _e()Musíte to definovat v části hlavy pluginu. Text DomainA používejte ho jednotně ve všem kódu.

// 在插件主文件头部已定义:Text Domain: my-first-plugin

// 在代码中使用
$greeting = __( 'Hello, world!', 'my-first-plugin' );
_e( 'This text will be echoed and translatable.', 'my-first-plugin' );

Poté můžete použít nástroje, jako je Poedit, k vytvoření požadovaného obsahu. .pot Šablony souborů – překladatelé mohou na základě nich vytvářet verze dokumentů v různých jazycích. .mo Soubor. Umístěte přeložený soubor do pluginu. /languages/ V adresáři WordPress automaticky načte odpovídající překlady podle nastavení jazyka webové stránky.

Závěr

Vývoj pluginů pro WordPress je procesem přeměny kreativních nápadů na funkční řešení. Jeho základem je pochopení mechanismů „hooků“, dodržování bezpečnostních standardů a použití modulární struktury kódu. Od vytvoření prostředí a napsání prvního hlavního souboru, přes hlubokou integraci funkcí jádra WordPress pomocí akcí a filtrů, až po vytvoření profesionálního uživatelského rozhraní pro správu, každý krok odráží odborné znalosti vývojáře. Bezpečnost je zárukou životnosti pluginu – ověřování dat, jejich čištění, escapeování a bezpečné implementace AJAX funkcí jsou základními pravidly, která je nutné dodržovat. Nakonec, díky přípravě na internacionalizaci, bude váš plugin schopen sloužit uživatelům po celém světě. Zvládnutím těchto základních dovedností získáte schopnost vytvářet kvalitní pluginy pro WordPress od nuly.

Časté dotazy

Jaké základní znalosti jsou potřebné k vývoji pluginů pro WordPress?

Pro vývoj pluginů pro WordPress je nutné mít základní znalosti programovacího jazyka PHP, neboť jádro pluginů je napsáno v PHP. Kromě toho je důležité mít základní povědomí o HTML, CSS a JavaScript, které slouží k vytváření uživatelského rozhraní a interakcí. Nejdůležitější však je pochopení základní architektury WordPress, zejména jeho systému hooků, včetně akcí (Actions) a filtrů (Filters), které jsou hlavními způsoby interakce mezi pluginy a samotným WordPressem.

Jak ladit můj WordPress plugin?

Doporučujeme používat režim WP_DEBUG. Nachází se v kořenovém adresáři WordPressu. wp-config.php V dokumentu budou uvedeny následující informace: define( 'WP_DEBUG', false ); Změňte to na: define( 'WP_DEBUG', true );To zobrazí chyby a varování PHP na obrazovce a zároveň je zaznamená. /wp-content/debug.log Soubor je obsažen v daném dokumentu. Kromě toho lze nainstalovat doplňky určené k monitorování databázových dotazů (např. Query Monitor), které umožňují podrobnější analýzu těchto dotazů, provádění různých „hooků“ v aplikaci a identifikaci výkonnostních problémů. Vývojářské nástroje prohlížečů (Console, Network) jsou také zásadní pro ladění kódů v jazyce JavaScript a AJAX požadavků.

Jak je můj plugin kompatibilní s tématem nebo jinými pluginy?

Pro maximální zajištění kompatibility je třeba dodržovat kódovací standardy a osvědčené postupy WordPressu. Používejte předpony pro názvy funkcí a tříd specifické pro dané pluginy, abyste předešli konfliktům s jiným kódem. Používejte globální proměnné s opatrností. Při vytváření vlastních databázových tabulek také používejte předpony pro názvy těchto tabulek. Pro funkce, které mohou být rozšířeny dalšími vývojáři, zvažte poskytnutí vlastních „hooků“ (speciálních funkcí). Před změnou globálních dat (např. dotazových proměnných) je důležité jejich stav zkontrolovat a po operaci se snažte data co nejvíce vrátit do původního stavu. Důkladné testování napříč různými tematikami a pluginy je nezbytným krokem pro zajištění kompatibility.

Jak po dokončení vývoje zveřejnit plugin do oficiálního adresáře WordPressu?

Nejprve se musíte ujistit, že váš plugin plně odpovídá oficiálním pokynům pro vývoj pluginů a kódovým standardům. Zaregistrujte si účet na WordPress.org a následně tam přihlaste svůj plugin. Kód pluginu je třeba uložit do SVN repozitáře a přiložit podrobný soubor Readme.txt (v určitém formátu). Plugin musí projít oficiální revizí kódu, přičemž hlavními kritérii jsou bezpečnost, kvalita kódu, komentáře kódu (musí být napsány ve stylu DocBlock) a absence škodlivého kódu. Po úspěšném odeslání můžete pomocí SVN aktualizovat a spravovat verze svého pluginu.