Ultimátní průvodce vývojem WordPress pluginů: Cesta od základů k odbornému použití

Čtení za 3 minuty.
2026-03-15
2026-06-03
2,457
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.

Pokud chcete vytvořit plugin pro WordPress, je nejprve nutné pochopit jeho základní strukturu. Plugin je v podstatě jedna nebo více PHP souborů, které dodržují specifická pravidla WordPressu a interagují s jeho jádrem prostřednictvím systému hooků (hooků), čímž rozšiřují nebo upravují funkce webové stránky. Pro vývoj pluginu potřebujete alespoň jeden hlavní soubor, který obsahuje standardní poznámky na začátku (plugin header comments). Ty jsou klíčové pro to, aby WordPress rozpoznal, že se jedná o plugin.

Vytvořte si svůj první plugin.

Začněme vytvořením nejjednoduššího “Hello World” pluginu – tento proces vám pomůže se seznámit se strukturou pluginů, stejně jako s postupy jejich aktivace a deaktivace.

Vytvoření hlavního souboru pluginu

Nejprve, ve složce s instalací WordPressu:wp-content/pluginsV té složce vytvořte novou složku, například…my-first-pluginV této složce vytvořte soubor s názvemmy-first-plugin.phpHlavní PHP soubor. Název tohoto souboru se obvykle shoduje s názvem složky.

Doporučujeme k přečtení. Ultimátní průvodce vývojem WordPress pluginů: Postavte si svůj první plugin od nuly

Otevřete to.my-first-plugin.phpPro soubor zadejte následující standardní informace o hlavičce pluginu:

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.
<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习的简单Hello World插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

Tento komentář je velmi důležitý. WordPress to provádí skenováním…wp-content/pluginsVšechny PHP soubory v daném adresáři a všech jeho podadresáříchPlugin Name:Tento plugin umožňuje identifikovat různé doplňky („plugins“) a zobrazuje je na stránce pro správu doplňků v pozadí (tj. na stránce, která není viditelná pro uživatele).

Implementace základních funkcí a aktivace hooků

Následně přidáme do pluginu jednoduchou funkci: zobrazíme řádek vlastního textu v patičce webové stránky. Zároveň využijeme životního cyklu WordPressu (lifecycle hooks), abychom ukázali, jaké operace lze provést při aktivaci a deaktivaci pluginu.

Pod poznámkou v hlavičce pokračujte v přidávání následujícího kódu:

// 定义一个函数,在页脚输出信息
function my_first_plugin_display_footer_text() {
    echo '<p style="text-align: center;">Vítejte u mého prvního WordPress pluginu!</p>'// Přidáme naši funkci pomocí akčního háku ‘wp_footer’
 add_action( 'wp_footer', 'my_first_plugin_display_footer_text' );
 
  // Akce, která se spustí při aktivaci pluginu
 function my_first_plugin_activate() {
    // Zde můžeme vytvořit databázovou tabulku, nastavit výchozí možnosti atd.
    update_option( 'my_first_plugin_installed', current_time( 'mysql' ) );
  }
 register_activation_hook( __FILE__, 'my_first_plugin_activate' );
 
  // Akce, která se spustí při deaktivaci pluginu
 function my_first_plugin_deactivate() {
    // Vyčistíme dočasná data, ale ponecháme data, která mohla být vytvořena uživatelem
    delete_option( 'my_first_plugin_installed' );
  }
 register_deactivation_hook( __FILE__, 'my_first_plugin_deactivate' );

Nyní se přihlaste do svého WordPress administrátorského účtu, přejděte na stránku “Příslušenství” (Plugins) a měli byste vidět příslušenství s názvem “Můj první plugin” (My First Plugin). Klikněte na tlačítko “Aktivovat” (Enable). Poté navštivte přední stránku vašeho webu a přečtěte si obsah až do konce – měli byste tam vidět přidaný vlastní text. Tento jednoduchý příklad ukazuje základní postup od vytvoření příslušenství až po jeho spuštění.

Doporučujeme k přečtení. Kompletní návod k vývoji pluginů pro WordPress: vytvořte svůj první plugin od nuly do jedné.

Podrobné pochopení systému hooků v WordPressu

Hooky funkcionalita je základem při vývoji WordPress pluginů. Umožňuje vám vložit vlastní kód v určitých bodech běhu jádra WordPressu, aniž byste museli měnit samotné základní soubory. Hooky se hlavně dělí na dvě kategorie: akce (Actions) a filtry (Filters).

Použití akčních hooků

Akční háčky se spouštějí při nastání určitých událostí, např. při zveřejnění článku, načtení hlavičky nebo patice stránky. Nejsou určeny k vracení žádných hodnot, jejich účelem je jednoduše “spustit určitý kus kódu”. Už jsme je použili v prvním pluginu.wp_footerTento akční hook.

Dalším běžným příkladem jeinit„Hook“ – funkce, která se spouští při inicializaci WordPressu. Často se používá k registraci vlastních typů článků nebo kategorií.

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 my_plugin_custom_init() {
    // 在这里注册自定义文章类型
}
add_action( 'init', 'my_plugin_custom_init' );

Akční háčky fungují prostřednictvím…add_action( $hook_name, $function_to_add, $priority, $accepted_args )Mounting of functions.

Použití filtrovacích hooků

Filtrovací hooky slouží k úpravě dat. Jsou vám poskytnuty před tím, než jsou data použita (např. uložena do databáze nebo zobrazena v prohlížeči), a po vaší úpravě vrátíte upravené hodnoty.the_contentFiltry vám umožňují upravovat obsah článků.

function my_plugin_add_disclaimer_to_content( $content ) {
    if ( is_single() ) {
        $disclaimer = '<p><em>Tento text byl zpracován mým pluginem.</em></p>';
        $content .= $disclaimer;
    }
    return $content; // 必须返回修改后的内容
}
add_filter( 'the_content', 'my_plugin_add_disclaimer_to_content' );

Filtrovací hook funguje správně.add_filter( $hook_name, $function_to_add, $priority, $accepted_args )Připojení funkce. Priorita$priorityUrčuje pořadí provádění více funkcí při jejich připojení („mountování“) ke stejnému „hooku“. Čím menší je číslo, tím vyšší je priorita funkce.

Doporučujeme k přečtení. Návod pro začátečníky k vývoji pluginů pro WordPress: Vytvořte si svůj první funkční plugin od nuly.

Best Practices for Plugin Architecture and Security

S tím, jak se funkce pluginů stávají složitějšími, je dobrá architektura a přísná bezpečnostní opatření klíčem k zajištění stability, udržovatelnosti a bezpečnosti pluginů.

Použití objektově orientovaného programování

对于功能丰富的插件,建议使用类(Class)来组织代码。这有助于封装功能,避免函数名冲突,并使代码结构更清晰。

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.
&lt;?php
/**
 * Plugin Name: 高级示例插件
 */
if ( ! class_exists( &#039;Advanced_Sample_Plugin&#039; ) ) {
    class Advanced_Sample_Plugin {
        public function __construct() {
            // 在构造函数中挂载钩子
            add_action( &#039;wp_footer&#039;, array( $this, &#039;display_message&#039; ) );
            add_filter( &#039;the_title&#039;, array( $this, &#039;modify_title&#039; ) );
        }

public function display_message() {
            echo &#039;<p>Zpráva ze třídy pokročilých doplňků (advanced plugins).</p>';
        }

public function modify_title( $title ) {
            return '前缀 - ' . $title;
        }
    }
    // 初始化插件类
    new Advanced_Sample_Plugin();
}

Implement security measures

Bezpečnost pluginů pro WordPress je velmi důležitá. Základním pravidlem je: nikdy nespoléhejte na data vložená uživateli. Všechna data pocházející od uživatelů musí být před použitím pečlivě ověřena a očištěna od možných nebezpečí.$_GET$_POST$_COOKIEData získaná z nadglobálních proměnných musí být vždy ověřena, očištěna a přeformátována (např. pomocí escape funkcí).

1. Verifikace: Zkontrolujte, zda data odpovídají očekávanému formátu (např. zda jsou e-maily nebo čísla). Použijte k tomu vhodné nástroje nebo procedury.sanitize_email()is_email()Funkce jako…
2. Úklid: Odstraňte nezákonné nebo nebezpečné znaky z dat. U textových vstupů použijte…sanitize_text_field()Pro obsah, který umožňuje použití HTML, použijte…wp_kses_post()wp_kses()
3. Escalation: Při výstupu dat do HTML, JavaScriptu nebo URL je nutné zajistit jejich bezpečné zakódování. Použijte vhodné metody k ochraně dat proti neoprávněnému zpracování.esc_html()esc_js()esc_url()Funkce jako…

Například při zpracování atributu s krátkým kódem:

function my_shortcode_handler( $atts ) {
    // 使用 shortcode_atts 设置默认值并提取属性
    $atts = shortcode_atts( array(
        'url' =&gt; '#',
    ), $atts, 'my_shortcode' );

// 清理并转义 URL 属性
    $clean_url = esc_url( $atts['url'] );

return "<a href='/cs/{$clean_url}/'>Bezpečný odkaz</a>"php
add_shortcode('my_shortcode', 'my_shortcode_handler');

Přidání správního rozhraní a podpory internacionalizace pro plugin

Zralý plugin obvykle vyžaduje nastavitelné možnosti a měl by být navržen tak, aby podporoval více jazyků.

Vytvořit stránku pro správu nastavení

Použijte API nastavení (Settings API) WordPress k vytvoření bezpečných a standardizovaných správních stránek. Jedná se o doporučený způsob, který vám pomůže řešit problémy související s bezpečností (ověřování „nonce“) a konzistencí uživatelského rozhraní formulářů.

Níže je zjednodušený příklad přidání vrchního menu a stránky pro nastavení:

class My_Plugin_Admin {
    public function __construct() {
        add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
        add_action( 'admin_init', array( $this, 'settings_init' ) );
    }

public function add_admin_menu() {
        add_menu_page(
            '我的插件设置', // 页面标题
            '我的插件',     // 菜单标题
            'manage_options', // 权限
            'my-plugin',      // 菜单slug
            array( $this, 'options_page_html' ) // 回调函数,输出页面内容
        );
    }

public function settings_init() {
        register_setting( 'my_plugin_settings', 'my_plugin_options' ); // 注册设置

// 添加设置区域和字段
        add_settings_section( 'my_plugin_section', '主要设置', null, 'my-plugin' );
        add_settings_field( 'api_key', 'API密钥', array( $this, 'api_key_field_html' ), 'my-plugin', 'my_plugin_section' );
    }

public function api_key_field_html() {
        $options = get_option( 'my_plugin_options' );
        ?&gt;
        <input type='text' name='my_plugin_options[api_key]' value='<?php echo esc_attr( $options['api_key'] ?? '' ); ?>'>
        <?php
    }

public function options_page_html() {
        // 检查用户权限
        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
                settings_fields( 'my_plugin_settings' );
                do_settings_sections( 'my-plugin' );
                submit_button();
                ?>
            <input type="hidden" name="trp-form-language" value="cs"/></form>
        </div>
        &lt;?php
    }
}
new My_Plugin_Admin();

Realizace internacionalizace pluginu.

Aby bylo možné používat tento plugin uživateli po celém světě, je nutné podporovat více jazyků. Toho je dosaženo pomocí…__( ‘Text’, ’text-domain’ )_e( ‘Text’, ’text-domain’ )Všechny texty viditelné pro uživatele jsou zabaleny do funkcí pro překlad, aby byl dosažen požadovaný efekt. To, co jste dříve definovali v poznámkách na začátku pluginu, slouží k tomuto účelu.Text Domain: my-first-pluginPřesně proto to bylo připraveno.

1. V kódu používejte funkci pro překlad všech řetězců, které je třeba přeložit:

    echo __( ‘欢迎使用我的插件!’, ‘my-first-plugin’ );
    $title = esc_html__( ‘设置页面’, ‘my-first-plugin’ );

2. Použijte nástroje, jako je Poedit, k prohledání textových řetězců překladů v kódu pluginů a vytvořte potřebné data..potŠablony souborů. Na základě těchto šablon vytvářejí překladatelé překlady pro každý jazyk..poA po kompilaci.moSoubory (jako)zh_CN.po/mo)。
3. Umístěte tyto jazykové soubory do složky pluginu.languagesVe složce. WordPress automaticky načte odpovídající překlady podle nastavení jazyka stránek.

Závěr

Vývoj pluginů pro WordPress je proces, který sahá od jednoduchých skriptů až po složité aplikace. Klíčovým aspektem je pochopení a obratné používání systému hooků – pomocí akcí a filtrů můžete své funkce bezproblémově integrovat do životního cyklu WordPressu. Dodržování objektově orientovaného designu zlepšuje organizaci a udržovatelnost kódu. Bezpečnost je základem vývoje; je nutné ověřovat veškerý uživatelský vstup, čistit ho a správně vykazovat jeho obsah. Nakonec vytvořte profesionální administrativní rozhraní pomocí API Settings a využijte funkce pro internacionalizaci, abyste svůj plugin dostali do světa. Začněte třeba vytvořením jednoduchého pluginu…my-first-plugin.phpZačněte postupně praktikovat tyto koncepty a brzy budete schopni vytvořit výkonné, bezpečné a populární pluginy pro WordPress.

Časté dotazy

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

Potřebujete ovládat programovací jazyk PHP, protože většina pluginů je napsána 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í. Nejdůležitější je pochopit základní principy fungování WordPressu, jako jsou tematika (themes), „hooky“ (programovací mechanismy), cykly (loopy) a způsoby ukládání dat.

Můžu testovat plugin lokálně, aniž by to ovlivnilo webové stránky online?

Rozhodně můžete, a to je dokonce velmi doporučeno. Měli byste vytvářet doplňky ve svém lokálním vývojovém prostředí (např. pomocí nástrojů jako XAMPP, MAMP, Local by Flywheel) nebo na samostatném testovacím serveru. Tím se zabráníte možným problémům, jako je selhání webové stránky online nebo ztráta dat v důsledku chyb v kódu.

Jak ladit kód mého pluginu?

WordPress poskytuje řadu nástrojů pro ladění. Za prvé,wp-config.phpAktivovat režim ladění v souboru: DefiniceWP_DEBUGKonstanta jetrueTo bude zobrazovat chyby, varování a upozornění PHP přímo na stránce. Pro složitější ladění lze použít…error_log()Funkce zapisuje informace do chybového logu serveru, nebo využívá speciální ladící nástroje, jako je Query Monitor, který poskytuje podrobné údaje o databázových dotazech, hookech, chybách v PHP apod.

Po dokončení vývoje, jak nahrát plugin do oficiálního adresáře WordPressu?

Potřebujete navštívit stránky WordPress.org a vytvořit si účet. Následně pomocí nástroje Subversion (SVN) odešlete kód svého pluginu do SVN repozitáře poskytovaného WordPressem. Před odesláním se ujistěte, že kód pluginu splňuje oficiální standardy a pokyny pro vývoj pluginů, včetně požadavků na bezpečnost, kvalitu kódu, dokumentaci a internacionalizaci. Po schválení bude váš plugin zobrazen v oficiálním repozitáři, kde ho uživatelé mohou stáhnout a nainstalovat.