Odhalení tajemství vývoje doplňků: Vytvořte si svůj první rozšíření od nuly

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

Odhalení tajemství vývoje doplňků: Vytvořte si svůj první rozšíření od nuly

Hlavní přitažlivost WordPressu spočívá v jeho extrémní rozšiřitelnosti. Díky vývoji vlastních pluginů mohou vývojáři bezproblémově přidávat do webových stránek jakékoli požadované funkce, aniž by bylo nutné měnit základní kód, což zajišťuje bezpečnost a pohodlí při aktualizacích. Tento průvodce vás systematicky seznámí s základními postupy, architektonickými normami a osvědčenými postupy při vývoji pluginů pro WordPress.

Základy vývoje pluginů

Než začnete psát kód, je velmi důležité pochopit základní koncepty a standardní strukturu WordPress pluginů. Plugin je v podstatě jedna nebo více PHP souborů, které jsou soustředěny do jednoho adresáře a obsahují speciální soubor s hlavičkovými poznámkami (header comments).

Standard hlavního souboru pluginu

Každý plugin musí mít hlavní PHP soubor. Tento soubor musí obsahovat standardní záhlaví informací o pluginu, aby ho WordPress mohl rozpoznat a spravovat. Tyto informace jsou uvedeny ve formě specifických bloků komentářů. Například, plugin s názvem… my-first-plugin.php Soubor může obsahovat následující informace:

Doporučujeme k přečtení. Úvodní průvodce vývojem WordPress temat: Postavte si své první téma od nuly

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于演示的 WordPress 插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Tyto informace se zobrazí přímo na stránce pro správu “plugínů” v administraci WordPressu. Mezi nimi…Text DomainDomain Path Určeno k internacionalizaci (i18n), aby plugin podporoval více jazyků.

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.

Katalog pluginů a organizace souborů

Správně strukturovaný adresář plug-inů usnadňuje nejen vývoj a údržbu, ale také pomáhá uživatelům lépe porozumět jejich fungování. Doporučujeme dodržovat následující způsob organizace:

/my-first-plugin/
├── my-first-plugin.php      // 主文件
├── uninstall.php            // 卸载清理脚本
├── includes/                // 核心功能类与函数
│   ├── class-core.php
│   └── functions.php
├── admin/                   // 后台相关文件
│   ├── css/
│   ├── js/
│   └── class-admin.php
├── public/                  // 前台相关文件
│   ├── css/
│   ├── js/
│   └── class-public.php
├── assets/                  // 静态资源(图片等)
└── languages/               // 翻译文件(.po, .mo)

Tato oddělená struktura jasně odděluje backend logiku, frontend logiku a společné zdroje, což odpovídá osvědčeným postupům při vývoji pro WordPress.

Využití hooků a filtrů k rozšíření funkcionalit

API pro pluginy v WordPressu je postaveno kolem “hooků”, které tvoří jádro jeho event-driven architektury. Hooky existují ve dvou typech: akce (actions) a filtry (filters). Porozumění a obratné využívání hooků je klíčové pro vývoj pluginů.

Využití akčních hooků

Akční háčky vám umožňují přidávat vlastní kód v určitých okamžicích během provádění WordPressu. Například při zveřejnění článku nebo při inicializaci menu v administraci. Můžete je použít k provedení různých úkolů. add_action() Funkce “nasadí” vaši funkci na tyto „háčky“ (tj. na určená místa v kódu, kde má být vaše funkce volána).

Doporučujeme k přečtení. Návod k tvorbě webových stránek: kompletní průvodce od plánování po spuštění.

Zde je jednoduchý příklad, jak přidat řádek s vlastním textem do patice webové stránky. Nejprve v hlavním souboru pluginu vytvoříme funkci a poté ji připojíme („mount“) k potici webové stránky. wp_footer Tento „akční háček“ je připojen…

function myplugin_add_footer_text() {
    echo '<p style="text-align:center;">Děkujeme, že používáte tento plugin!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' );

Když WordPress provádí… wp_footer Při určování polohy (obvykle v rámci tématu…) footer.php Pokud je funkce volána z jiného místa (např. z jiného skriptu), funkce, kterou jsme přidali, bude spuštěna.

Využití filtrovacích hooků

Filtrovací háčky slouží k úpravě dat přenášených v průběhu procesu. Umožňují vám zachytit, zkontrolovat a upravit určitou proměnnou, než ji WordPress nebo jiné pluginy použijí. add_filter() Funkce slouží k aplikaci filtrů.

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.

Například změna výchozího výstupu nadpisů článků tak, aby před každým nadpisem byl přidán určitý předpona. Funkci následně připojíme („mount“) k… the_title Tento filtr je připojen na tomto háčku.

function myplugin_prefix_post_title( $title, $id = null ) {
    // 确保只在主循环且在非管理后台时添加前缀
    if ( ! is_admin() && in_the_loop() ) {
        $title = '[推荐] ' . $title;
    }
    return $title;
}
add_filter( 'the_title', 'myplugin_prefix_post_title', 10, 2 );

Zde uvedené parametry… 10 Jde o prioritu – čím menší je číslo, tím dříve se operace provádí.2 Znamená to, že naše funkce přijímá dva parametry.$title$idFunkce filtru musí vrátit upravenou hodnotu.

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

Mnoho pluginů vyžaduje možnosti konfigurace v administraci WordPressu. To se obvykle dosahuje přidáním nových stránek do správního menu. WordPress poskytuje bohatou sadu funkcí pro vytváření hlavních menu, podmenů a stránek s nastaveními.

Doporučujeme k přečtení. Kompletní návod: Přizpůsobení šablony stránky produktu ve WooCommerce pro zvýšení prodejní konverze

Přidat hlavní správní menu

Můžete použít… add_menu_page() Tato funkce vytvoří pro váš plugin samostatný položku v pozadí menu. Vyžaduje více parametrů k definování nadpisu stránky, názvu menu, oprávnění, jedinečného identifikátoru, funkce na zpětné volání a dalších parametrů.

Následující kód ukazuje, jak přidat jednoduchou stránku s hlavním menu a zajistit, aby se zobrazovala pouze při přístupu administrátora.

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_settings_page', // 显示页面内容的回调函数
        'dashicons-admin-generic', // 图标(使用 Dashicons)
        30                      // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 定义设置页面的内容
function myplugin_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
            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
}

Zde,myplugin_settings_page Funkce je zodpovědná za renderování HTML obsahu stránky. V reálných projektech kombinujete tuto funkci s API nastavenými v WordPressu.register_setting, add_settings_section, add_settings_field) pro vytvoření formulářů, které lze uložit.

Vytvoření formuláře a uložení nastavení

Pro bezpečné a správné zpracování uživatelského vstupu je nutné použít WordPress API. Toto API zajišťuje kontrolu dat (mimo rámec protokolu CES), jejich ověřování a uložení do databáze. Nejprve je třeba registrovat novou možnost nastavení (setting option) a poté přidat příslušné pole pro ukládání údajů.

Následující příklad ukazuje, jak registrovat textové pole a uložit jeho hodnotu.

function myplugin_settings_init() {
    register_setting(
        'myplugin_options', // 选项组名
        'myplugin_api_key', // 选项名(存储在 wp_options 表中)
        array(
            'type' => 'string',
            'sanitize_callback' => 'sanitize_text_field', // 数据清理回调
            'default' => ''
        )
    );

    add_settings_section(
        'myplugin_section_main',
        '主要设置',
        null,
        'myplugin-settings'
    );

    add_settings_field(
        'myplugin_field_api',
        'API 密钥',
        'myplugin_field_api_cb',
        'myplugin-settings',
        'myplugin_section_main',
        array( 'label_for' => 'myplugin_api_key' )
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

function myplugin_field_api_cb() {
    $value = get_option( 'myplugin_api_key', '' );
    echo '<input type="text" id="myplugin_api_key" name="myplugin_api_key" value="' . esc_attr( $value ) . '" class="regular-text">';
}

Tímto způsobem budou data odeslaná prostřednictvím formuláře zpracována. sanitize_text_field Funkce provádí úklid dat a poté je automaticky uloží do databáze. wp_options V tabulce je název klíče… myplugin_api_key

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

Při vývoji doplňků jsou bezpečnost a výkon zásadními aspekty, které nelze ignorovat. Nebezpečný doplněk může být zdrojem chyb pro celý webový site postavený na platformě WordPress.

Data validation and escaping

Nikdy nevěřte vstupním údajům uživatelů. Všechny daty pocházející z externích zdrojů (jako jsou formuláře, URL adresy, databáze) musí být před výstupem nebo použitím ověřeny (validation), očištěny (sanitization) a označeny speciálními značkami (escaping).

  • Verifikace: Zkontrolujte, zda data odpovídají očekávanému formátu (např. zda se jedná o e-mailovou adresu nebo číslo).
  • Úklid: Odstranění nezpřízněných znaků nebo obsahu z dat (např. odstranění HTML značek).
  • Escape: Při výstupu dat do HTML, JavaScriptu nebo URL se provádí kódování, aby se zabránilo útokům typu cross-site scripting.

WordPress poskytuje mnoho pomocných funkcí, například:
* sanitize_text_field()Očistit textový řetězec.
* esc_html(): Uvolnění HTML výstupu.
* esc_url()Uzavřený URL (escaped URL).
* wp_kses_post()HTML značky povolené pro filtrování obsahu článků pomocí filtrů.

Správné načtení skriptů a stylů

Aby se nepodílelo to na rychlosti načítání stránek a aby se předešlo konfliktům, musí být soubory JavaScript a CSS správně registrovány a načítány v pořadí pomocí metod poskytovaných WordPressem. wp_enqueue_script()wp_enqueue_style() Funkce.

Níže uvedený kód ukazuje, jak načítat výhradní JS a CSS soubory pouze na vlastní správní stránce pluginu.

function myplugin_load_admin_assets( $hook ) {
    // 只在我们插件的设置页加载
    if ( $hook != 'toplevel_page_myplugin-settings' ) {
        return;
    }
    wp_enqueue_style(
        'myplugin-admin-css',
        plugins_url( 'admin/css/style.css', __FILE__ ),
        array(),
        '1.0.0'
    );
    wp_enqueue_script(
        'myplugin-admin-js',
        plugins_url( 'admin/js/script.js', __FILE__ ),
        array( 'jquery' ), // 声明依赖 jQuery
        '1.0.0',
        true // 在页脚加载
    );
}
add_action( 'admin_enqueue_scripts', 'myplugin_load_admin_assets' );

Tento způsob zajišťuje, že zdroje jsou načítány pouze v případě potřeby a že závislosti (např. na jQuery) jsou správně zpracovány. Parametry verzních čísel také pomáhají spravovat mezipaměť prohlížeče.

Závěr

Vývoj pluginů pro WordPress je systémový proces, který začíná dodržováním standardní struktury souborů a informačních hlaviček. Jeho podstatou je obratné využívání akcí a filtrů, které umožňují pluginy nenápadně integrovat do životního cyklu WordPressu. Vytvoření přehledného administrátorského rozhraní pro správu pluginů a striktné dodržování API pro nastavení výrazně zlepšuje uživatelský zážitek a bezpečnost dat. Konečně, uplatňování bezpečnostních zásad (ověřování, čištění dat, escapeování) a principů optimalizace výkonu (načítání zdrojů podle potřeby) je základem pro vývoj kvalitních a spolehlivých pluginů. Dodržováním těchto kroků a osvědčených postupů budete schopni vytvořit funkční, bezpečné a snadno udržovatelné rozšíření pro WordPress.

Časté dotazy

K vývoji pluginů pro WordPress jsou potřebné následující základní znalosti:

Vývoj pluginů pro WordPress vyžaduje, abyste byli obeznámeni s programovacím jazykem PHP, neboť pluginy jsou většinou složeny z kódu napsaného v PHP. Současně je potřeba mít základní znalosti HTML, CSS a JavaScript, které slouží k vytváření uživatelského rozhraní a interakcí. Nejdůležitější však je, abyste porozuměli základní architektuře WordPressu, zejména jeho systému hooků (akce a filtry), hierarchii šablon temát a operacím s databází. WP_Querywpdb Třída).

Jak ladit WordPress plugin, který právě vyvíjíte?

Nejúčinnější způsob je… wp-config.php V souboru povolte režim ladění WordPressu. WP_DEBUG Konstanta je nastavena na trueTo zobrazí na stránce chyby PHP, varování a upozornění. Můžete také použít… error_log() Funkce zaznamenává vlastní informace o ladění do chybového logu serveru. Pro složitější ladění lze zvážit použití specializovaných nástrojů pro ladění PHP, jako je Xdebug.

Jak by měly pluginy zpracovávat operace s databází?

Pro jednoduché ukládání dat se doporučuje použít API pro volby (Options API) v WordPressu.add_option, get_option, update_optionSlouží k ukládání dat ve formátu klíč-hodnota. Pro strukturovaná data, která vyžadují vlastní uspořádání tabulek, můžete použít funkce dostupné po aktivaci pluginu. dbDelta() Funkce slouží k bezpečnému vytvoření nebo aktualizaci struktury tabulky, což vyžaduje dodržování určitého SQL formátu. Vždy používejte tuto funkci. $wpdb Všechny databázové dotazy jsou prováděny pomocí globálního objektu, a k prevenci útoků typu SQL injection se používá jeho metoda `prepare`.

Jak mohu učinit, aby můj plugin podporoval internacionalizaci v více jazycích?

WordPress využívá framework GNU gettext pro zpracování internacionalizace. Je nutné správně nastavit potřebné parametry v hlavičkových informacích hlavního souboru vašeho pluginu. Text DomainDomain PathV kódu všechny řetězce, které je třeba přeložit, označte pomocí speciálních značek. __()(Použito pro návratové hodnoty) nebo _e()(Použito pro přímý výstup) Zabalte to do funkcí typu „překlad“. Poté použijte nástroj, jako je Poedit, k prohledání zdrojového kódu a generování překladu. .pot Šablony souborů a na základě nich vytvoření verzí pro jednotlivé jazyky. .po.mo Přeložte soubor a umístěte jej na určené místo. Domain Path V adresáři.

Jak po dokončení vývoje zveřejnit svůj plugin do oficiálního katalogu?

Nejprve se ujistěte, že váš plugin plně splňuje oficiální „Průvodce vývojem pluginů“ a požadavky na odeslání, včetně standardů kódu, bezpečnosti, licenčních dohod (musí být kompatibilní s licencí GPL) atd. Poté si vytvořte účet na stránkách WordPress.org a požádejte o odeslání pluginu. Po schválení můžete kód pluginu odeslat do oficiálně určeného repozitáře pomocí nástroje Subversion. Po odeslání je nutné vyplnit stránku popisu pluginu, která obsahuje banner, ikonu, snímky obrazovky a podrobné informace, aby ji uživatelé mohli prohlídnout a stáhnout.