Kompletní průvodce vývojem pluginů pro WordPress: od nuly až po pokročilé techniky.

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

Vývoj WordPress pluginu znamená rozšiřování základních funkcí nejpopulárnějšího systému pro správu obsahu na světě. Ať už chcete vytvořit malý nástroj pro konkrétní potřeby, nebo plánujete vydat komerční produkt, je velmi důležité porozumět celému vývojovému procesu. Dobře strukturovaný plugin je nejen funkčně výkonný, ale také bezpečný, efektivní a snadno udržovatelný a distribuovatelný.

Základní principy pluginů pro WordPress

Než se pustíte do hlubšího procházení kódu, je prvním krokem pochopení základních principů fungování WordPress pluginů.

Co je to plugin?

V podstatě je plugin soubor nebo soubory v PHP jazyce, které jsou “připojeny” k jádru WordPressu a umožňují přidávat, měnit nebo odstraňovat funkce pomocí předdefinovaných “háčků” („hooks“). Každý plugin má hlavní soubor, který obvykle obsahuje speciální poznámku v hlavičce („header comment“), která identifikuje tento plugin pro systém WordPress.

Doporučujeme k přečtení. Ultimátní průvodce vývojem pluginů pro WordPress: Vytvoření profesionálních rozšíření od nuly

Struktura hlavního souboru pluginu

Tento hlavní soubor je vstupním bodem pro plugin. Jeho poznámky v hlavičce jsou velmi důležité, protože WordPress právě pomocí těchto poznámek rozpoznává informace o pluginu a zobrazuje je v panelu pro správu backendu.

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: 这是一个简短的插件描述,解释其功能。
 * Version:     1.0.0
 * Author:      你的名字
 * Author URI:  https://example.com
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 */

Výše uvedený kód definuje základní metadata pluginu. Mezi nimi:Text DomainJedná se o identifikátor určený k internacionalizaci (překladům). Při ukládání tohoto souboru jej je třeba umístit do složky s názvem názvu pluginu a poté tuto složku nahrát do WordPressu. /wp-content/plugins/ V adresáři. Poté ho budeš moci vidět a aktivovat na stránce “Doplňky” v administraci.

Nastavení vývojového prostředí a nástroje

Efektivní vývojové prostředí může výrazně zlepšit zážitek a produktivitu při vývoji doplňků (pluginů).

Nastavení lokálního vývojového prostředí.

Doporučujeme použít lokální serverové prostředí, jako je XAMPP, MAMP, Local by Flywheel nebo Docker. To vám umožní provádět vývoj a ladění bez ovlivnění webové stránky online. Ujistěte se, že vaše lokální verze PHP je kompatibilní s prostředím cílového serveru, a aktivujte funkci hlášení chyb – to je ve vývojovém procesu velmi užitečné.wp-config.phpPřidejte následující kód do souboru, abyste aktivovali režim ladění:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // 将错误记录到 /wp-content/debug.log
define( 'WP_DEBUG_DISPLAY', false ); // 不要在页面上显示错误

Doporučené vývojové nástroje

Kromě editorů kódu (jako jsou VS Code, PhpStorm) jsou následující nástroje zásadní pro vývoj doplňků (plug-inů):
1. 版本控制 (Git):使用Git和GitHub/GitLab/Bitbucket来管理代码版本和协作。
2. 代码标准检查工具:WordPress有自己的一套编码标准。使用 PHP_CodeSniffer 与 WordPress Coding Standards 规则集可以确保你的代码风格与社区一致。
3. 浏览器开发者工具:用于调试前端JavaScript和CSS。
4. 数据库管理工具 (如 phpMyAdmin):用于直接查看和管理插件创建或修改的数据。
5. CLI 工具:熟练使用WP-CLI可以快速执行许多WordPress管理任务,对于测试和部署很有帮助。

Doporučujeme k přečtení. Naučte se vyvíjet pluginy pro WordPress: vytvářejte efektivní přizpůsobené funkční moduly od nuly.

Podrobný popis hlavního vývojového procesu

Po pochopení základních principů a přípravě potřebných nástrojů můžeme začít psát první funkci.

Základní třída pro vytváření pluginů

Ačkoli lze pluginy přímo naprogramovat pomocí funkcí, použití objektově orientovaného programování (OOP) a tříd k organizaci kódu je profesionálnější a snadněji udržovatelné řešení. To pomáhá zakrýt jednotlivé funkce a předchází konfliktům při volbě názvů.

class My_First_Plugin {
    public function __construct() {
        // 构造函数,在这里挂载钩子
        add_action( 'init', array( $this, 'register_shortcode' ) );
        add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
    }

public function register_shortcode() {
        add_shortcode( 'my_greeting', array( $this, 'render_shortcode' ) );
    }

public function render_shortcode( $atts ) {
        return '<p>Ahoj, jsem z mého pluginu!</p>';
    }

public function enqueue_scripts() {
        wp_enqueue_style( 'my-plugin-style', plugins_url( 'css/style.css', __FILE__ ) );
    }
}

// 实例化插件类
new My_First_Plugin();

Použití akcí a filtrovacích hooků

Hooky mechanismy jsou základem vývoje pluginů pro WordPress. Rozdělují se na dvě kategorie: akce (Actions) a filtry (Filters).
* 动作钩子:允许你在特定的时间点(如“初始化后”、“保存文章前”)“注入”并执行你自己的代码。使用add_action()Funkce slouží k montáži.
* 过滤器钩子:允许你修改WordPress或其他插件即将要使用的数据。使用add_filter()Funkce slouží k načtení dat a jejich následnému upravení; vaše funkce musí vrátit upravenou hodnotu.

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.
// 动作钩子示例:在文章末尾添加内容
add_action( 'the_content', function( $content ) {
    if ( is_single() ) {
        $extra_text = '<div class="my-plugin-note">Děkujeme, že jste si tento článek přečetli!</div>';
        $content .= $extra_text;
    }
    return $content; // 注意:这里实际上用到了过滤器,但挂载在动作钩子‘the_content’上,它同时也是一个过滤器
} );

// 过滤器钩子示例:修改文章标题
add_filter( 'the_title', function( $title ) {
    return '【精选】' . $title;
} );

Vytvořte správní menu a nastavovací stránky.

Aby uživatelé mohli konfigurovat váš plugin, je nutné v administraci WordPress vytvořit správné menu a nastavení stránky. To se provádí především pomocí…add_menu_page()add_options_page()Implementace funkcí typu „čekání“ (waiting functions).

class 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',    // 权限
            'my-plugin-settings', // 菜单slug
            array( $this, 'render_settings_page' ) // 显示页面的回调函数
        );
    }

public function register_settings() {
        register_setting( 'my_plugin_settings_group', 'my_plugin_option' );
        add_settings_section( 'section_id', '主要设置', null, 'my-plugin-settings' );
        add_settings_field( 'field_id', '选项名称', array( $this, 'render_field' ), 'my-plugin-settings', 'section_id' );
    }

public function render_field() {
        $value = get_option( 'my_plugin_option' );
        echo '<input type="text" name="my_plugin_option" value="' . esc_attr( $value ) . '" />';
    }

public function render_settings_page() {
        ?&gt;
        <div class="wrap">
            <h1>Nastavení mého pluginu</h1>
            <form action="/cs/options.php/" method="post" data-trp-original-action="options.php">
                <?php
                settings_fields( 'my_plugin_settings_group' );
                do_settings_sections( 'my-plugin-settings' );
                submit_button();
                ?>
            <input type="hidden" name="trp-form-language" value="cs"/></form>
        </div>
        &lt;?php
    }
}
new Plugin_Admin();

Pokročilá témata a osvědčené postupy

Když se funkce pluginů stávají složitějšími, dodržování osvědčených postupů (best practices) je klíčem k zajištění kvality.

Vytvoření vlastní databázové tabulky

I když WordPress…wp_optionsTabulky jsou vhodné pro ukládání jednoduchých konfigurací, avšak složitá data (jako jsou objednávky nebo odeslání formulářů) by měla být uložena v tabulkách vlastní databáze. K tomu je nutné vytvořit tyto tabulky při aktivaci pluginu.

Doporučujeme k přečtení. Úplný průvodce vývojem pluginů pro WordPress: vytvořte kvalitní rozšíření od nuly do jedné.

Potřebujete použít…register_activation_hook()Zařízení „hook“ zajišťuje, že kód pro vytvoření tabulky bude spuštěn pouze jednou, a to při aktivaci pluginu.

register_activation_hook( __FILE__, 'my_plugin_create_table' );

function my_plugin_create_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'my_plugin_data'; // 使用前缀避免冲突
    $charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        name tinytext 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 );
}

Ujistěte se, že plugin je bezpečný a že plní své požadavky z hlediska výkonu.

Bezpečnost je velmi důležitá. Vždy provádějte ověřování, čištění a escapeování uživatelského vstupu.
* 验证:检查数据是否符合预期格式(如是否为邮箱) - is_email()
* 清理:移除数据中不允许的字符 - sanitize_text_field(), sanitize_email()
* 转义:在将数据输出到HTML、JavaScript或URL之前,确保它们被安全编码 - esc_html(), esc_js(), esc_url()

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.

Co se týká výkonu, je důležité správně využívat „hooky“ (speciální funkce) a vyhnout se provádění zbytečných dotazů při každém načtení stránky. Využijte také objektové vyhledávací vybavení (cache) – např.wp_cache_set()wp_cache_get()Slouží k ukládání drahých výsledků dotazů. Zároveň je důležité správně nastavit závislosti a verze pro front-end zdroje (CSS/JS) a zvážit použití podmíněného načítání v příslušných případech.

Příprava na internacionalizaci a lokalizaci

Aby váš plugin mohl být používán uživateli po celém světě, je nutné provést přípravu na internacionalizaci (i18n). To znamená, že všechny řetězce viditelné pro uživatele musíte zabalit do speciálních funkcí. V kódu použijte…__()Přeložte a vraťte řetězec pomocí:_e()Přeložte a přímo vypusťte tento text:

echo '<h2>' . __( '欢迎来到我的插件', 'my-first-plugin' ) . '</h2>';
_e( '这是一个段落。', 'my-first-plugin' );

Z toho'my-first-plugin'Bylo to vydefinováno v části hlavy pluginu.Text DomainPoté můžete použít nástroje, jako je Poedit, k vytvoření….potŠablony a dokumentace pro různé jazyky.po.moPřekládání dokumentů.

Závěr

Vývoj pluginů pro WordPress je postupný proces, který začíná pochopením základní architektury (hooky, hlavní soubory), pokračuje dovedným využíváním akcí a filtrů, a poté přechází k vytváření uživatelského rozhraní a správy databáze. Úspěšní vývojáři se nezaměřují pouze na implementaci funkcí, ale také na bezpečnost kódu, jeho výkon, udržovatelnost a internacionalizaci. Vytvořením profesionálního lokálního prostředí, dodržováním standardů kódování WordPress a praktikováním bezpečného zpracování vstupních a výstupních dat budete schopni vytvořit silné, spolehlivé a populární pluginy. Pamatujte, že nejlepším způsobem, jak se naučit vývoj pluginů, je začít s malou, ale dobře navrženou funkcí a postupně ji iterativně rozšiřovat.

Č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, protože klíčová logika pluginu je napsána v PHP. Kromě toho byste měli mít základní znalosti HTML, CSS a JavaScriptu, které jsou potřebné pro vytváření front-end uživatelského rozhraní a interakcí. Také by bylo užitečné znát základní koncepty databází MySQL, protože budete muset komunikovat s databází WordPress.

Jak zabránit konfliktům mezi mým pluginem a jinými pluginy?

Použití objektově orientovaného programování (OOP) a tříd k zabalení vašeho kódu je primární metodou. Dále je důležité přidávat jedinečné předpony ke všem názvům funkcí, tříd, konstant, možností a názvům databázových tabulek (např. pomocí zkratky nebo názvu vašeho pluginu). Tím se maximalizuje možnost snížení kolizí názvů. Kromě toho je nutné zajistit, aby vaše volání zpět (callback funkce) byla jedinečná při použití montážních hooků.

Jak bych měl ladit kód svého pluginu?

Nejprve se ujistěte, že…wp-config.phpBylo zapnuto.WP_DEBUGRežim. Chybové zprávy budou zaznamenány./wp-content/debug.logVe souboru. Dále lze použít…error_log()Funkce zapisuje vlastní informace o ladění do logů. Pro složitější logiku můžete v kombinaci s profesionálními nástroji na ladění, jako je Xdebug, a vaším kódovým editorem (např. VS Code) nastavit přerušení a provádět ladění řádek po řádku.

Po dokončení vývoje, jak mohu svůj plugin odeslat do oficiálního adresáře pluginů WordPress?

Potřebujete přistupovat do oficiálního centra pro vývojáře pluginů WordPress a zaregistrovat si účet. Před odesláním pluginu se ujistěte, že plně splňuje oficiální pokyny pro vývoj pluginů a kódové standardy. Kód vašeho pluginu musí obsahovat standardní poznámky v hlavičce souboru a nesmí obsahovat žádný šifrovaný nebo zkomplikovaný kód. Proces odeslání zahrnuje nahrání komprimovaného souboru s pluginem a čekání na manuální posouzení. Po schválení bude váš plugin možné zveřejnit v oficiálním repozitáři.