Vývoj pluginů pro WordPress: vytvoření vlastních funkčních modulů od nuly do jedné.

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

Porozumění základní struktuře WordPress pluginů

Než se pustíte do hlubšího prozkoumávání kódu, je zásadní pochopit základní složky WordPress pluginu. Plugin je v podstatě jednotkou nebo souborem funkcí, které jsou umístěny do systému WordPress.wp-content/plugins/PHP soubory nacházející se v adresáři. Jejich jádrem je hlavní soubor, který obsahuje metadata o tomto pluginu a informuje systém WordPress o jeho existenci pomocí bloku komentářů ve speciálním formátu.

Klíčový vstupní soubor pluginu – například ten, který jsme pojmenovali…my-first-plugin.phpMusí obsahovat specifický poznámkový blok na začátku souboru (tzv. „header comment“). Tento blok definuje název pluginu, jeho popis, verzi, autora a další informace, a je jediným základem, na základě kterého WordPress rozpozná a načte plugin. Nejzákladnější plugin může tvořit pouze tento soubor a využívá k úpravě nebo rozšíření funkcí webové stránky API poskytované WordPressem – konkrétně akční háčky (Action Hooks) a filtrovací háčky (Filter Hooks).

Funkce pluginů mohou být velmi jednoduché – například přidání řádku textu na spodní část stránky – stejně jako mohou být extrémně složité, například vytvoření kompletního systému pro elektronický obchod. Bez ohledu na to, jak složité pluginy jsou, jejich vývoj se řídí stejným základním vzorem: nejprve vytvoříme správnou strukturu souborů na správném místě, poté napíšeme kód a připojíme ho k životnímu cyklu WordPressu, a nakonec provádíme potřebné konfigurace a interakce prostřednictvím administrátorského rozhraní WordPressu.

Doporučujeme k přečtení. Průvodce vývojem WordPress pluginů: Vytvořte si svůj první plugin od nuly

Vytvořte svůj první plugin.

Provedeme si vytvoření nejjednoduššího pluginu pomocí klasického příkladu “Hello World”. Funkce tohoto pluginu je zobrazovat výzvu „Hello World“ na začátku obsahu článků na každé stránce webu.

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.

Nejprve potřebujete to mít buď lokálně, nebo na serveru.wp-content/plugins/V adresáři vytvořte novou složku a pojmenujte ji…my-hello-pluginPoté v této složce vytvořte hlavní PHP soubor, který pojmenujeme…my-hello-plugin.php

Napsat hlavní soubor pluginu

Otevřete to.my-hello-plugin.phpSoubor a zadejte následující kód. Tento kód dodržuje standardní formát WordPress pluginů a obsahuje záhlaví s informacemi o pluginu i kód pro realizaci jeho funkcí.

<?php
/**
 * Plugin Name:       我的问候插件
 * Plugin URI:        https://yourwebsite.com/my-hello-plugin
 * Description:       这是一个简单的插件,用于在文章内容前输出“您好,读者!”。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-hello-plugin
 */

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * 在主文章内容前添加问候语。
 *
 * @param string $content 原始的文章内容。
 * @return string 添加了问候语后的新内容。
 */
function my_hello_add_greeting( $content ) {
    $greeting = &#039;<p style="background-color:#f0f8ff; padding:10px; border-left:4px solid #0073aa;"><strong>Dobrý den, čtenáři! Vítejte při čtení tohoto článku.</strong></p>';
    // 只在主循环且是文章页面时添加
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'my_hello_add_greeting' );

Aktivujte a otestujte plugin.

Nahrňte složku, která obsahuje tento soubor, na server.wp-content/plugins/Katalog – nebo pokud provádíte vývoj lokálně, umístěte soubor přímo na odpovídající místo. Poté se přihlaste do administrace WordPressu a navštivte menu “Příslušenství”. V seznamu příslušenství byste měli vidět “Můj pozdravovací plugin”. Klikněte na tlačítko “Aktivovat”.

Po aktivaci při návštěvě jakéhokoli článku nebo stránky na webu uvidíte před začátkem samotného textu článku výzvu se světle modrým pozadím a levým rámečkem. Tento proces jasně ilustruje základní postupy vývoje pluginů: vytvoření souborů, přidání funkcí pomocí „hooků“ a následné aktivace pluginu v pozadí. Úspěšně jste učinili první krok v vývoji WordPress pluginů.

Doporučujeme k přečtení. Vývoj pluginů pro WordPress: vytvoření výkonných rozšíření webových stránek od nuly do jedné.

Rozšíření funkcí pomocí háčků a filtrů

Flexibilita a rozšiřitelnost WordPressu se do značné míry díky systému “hooků”. Hooky jsou rozděleny do dvou kategorií: akční hooky (Actions) a filtrovací hooky (Filters). Porozumění a obratné používání hooků je klíčové pro vývoj pokročilých pluginů.

Akční háčky vám umožňují vložit a spustit vlastní kód v určitých okamžicích během provozu WordPressu – například při zveřejnění článku nebo načtení stránky.save_postAkce se spouštějí, když je článek nebo stránka uložena do databáze. Můžete to provést pomocí…add_action()Funkce “nasadí” vaši vlastní funkci na tento hook.

Filtrovací háčky vám umožňují upravovat data, která vytváří WordPress během svého zpracování. Registrováte funkci do daného filtru a když WordPress tento filtr provede, předá data všem registrovaným funkcím a přijme jejich výsledné hodnoty. V příkladu výše byla použita právě tato funkce.the_contentJde o typický filtrovací hook, který vám umožňuje upravit obsah článku před tím, než bude vyslán.

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.

Vytvořte jednoduchou správní možnost.

Skutečně užitečný plugin obvykle vyžaduje několik možností, které mohou uživatelé nastavit. To zahrnuje interakci s administrátorským rozhraním WordPressu. Ukážeme si prostým příkladem, jak přidat stránku pro vlastní nastavení.

Nejprve použijeme…add_action(‘admin_menu’, …)Zaregistrujte funkci, která v administračním rozhraní vytvoří nový položku v menu.

/**
 * 在WordPress后台添加一个自定义菜单页面。
 */
function my_hello_add_admin_menu() {
    add_menu_page(
        ‘问候插件设置’, // 页面标题
        ‘问候插件’,     // 菜单标题
        ‘manage_options’, // 所需权限
        ‘my-hello-plugin’, // 菜单slug
        ‘my_hello_admin_page_html’, // 用于显示页面内容的回调函数
        ‘dashicons-format-chat’, // 图标(可选)
        80 // 菜单位置(可选)
    );
}
add_action( ‘admin_menu‘, ’my_hello_add_admin_menu’ );

/**
 * 自定义设置页面的HTML输出。
 */
function my_hello_admin_page_html() {
    // 检查用户权限
    if ( ! current_user_can( ‘manage_options’ ) ) {
        return;
    }
    ?&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( ‘my_hello_options’ );
            do_settings_sections( ‘my-hello-plugin’ );
            submit_button( ‘保存问候语设置’ );
            ?>
        <input type="hidden" name="trp-form-language" value="cs"/></form>
    </div>
    <br />&lt;?php
}

Pole pro nastavení registrace a výstupu

Samotná stránka nestačí; potřebujeme vytvořit možnosti, které lze uložit. K tomu je potřeba použít…add_action(‘admin_init’, …), a takéregister_setting()add_settings_section()add_settings_field()a řadu dalších funkcí.

Doporučujeme k přečtení. Od začátku až po pokročilou úroveň: Kompletní průvodce vývojem pluginů pro WordPress.

/**
 * 初始化插件的设置。
 */
function my_hello_settings_init() {
    // 注册一个设置项到数据库的‘my_hello_options’键下
    register_setting( ‘my_hello_options‘, ’my_hello_greeting_text’ );

// 在页面中添加一个设置区域
    add_settings_section(
        ‘my_hello_section’, // 区域ID
        ‘问候语设置’,        // 区域标题
        ‘my_hello_section_html’, // 区域描述的回调函数
        ‘my-hello-plugin’ // 所属页面slug
    );

// 在区域内添加一个具体的设置字段
    add_settings_field(
        ‘my_hello_field’, // 字段ID
        ‘自定义问候语’,    // 字段标签
        ‘my_hello_field_html’, // 用于渲染字段HTML的回调函数
        ‘my-hello-plugin’, // 所属页面slug
        ‘my_hello_section’ // 所属区域ID
    );
}
add_action( ‘admin_init‘, ’my_hello_settings_init’ );

/**
 * 设置区域的描述信息。
 */
function my_hello_section_html() {
    echo ‘<p>Zde nastavte obsah pozdravu, který se zobrazí na začátku článku.</p>’;
}

/**
 * 渲染设置字段的HTML。
 */
function my_hello_field_html() {
    // 从数据库获取已保存的值,如果没有则使用默认值
    $greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    ?&gt;
    <input type="‘text’"
           id="‘my_hello_greeting_text’"
           name="‘my_hello_greeting_text’"
           value="“NO NUMERIC NOISE KEY" 1000”
 class="“regular-text”" />
    <p class="“description”">Zadejte prosím pozdrav, který chcete zobrazit před obsahem článku.</p>
    <br />&lt;?php
}

Nyní už máme stránku pro nastavení backendu s vstupními poli. Dalším krokem je upravit původní funkce.my_hello_add_greetingNeche to načíst pozdravy z možností v databázi.

function my_hello_add_greeting( $content ) {
    // 获取保存的自定义问候语,如果不存在则使用默认值
    $custom_greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    $greeting = ‘<p style="“background-color:#f0f8ff;" padding:10px; border-left:4px solid #0073aa;”><strong>’ . esc_html( $custom_greeting ) . ‘</strong></p>’;
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}

Tím je plugin s základními funkcemi pro konfiguraci backendu hotov. Uživatelé mohou volně upravovat text pozdravů v menu “Pozdravný plugin” v backendu, přičemž články na frontendu automaticky používají nejnovější nastavení.

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.

Nejlepší postupy a zásady pro vývoj doplňků (plug-inů) a zabezpečení

Vytvořte WordPress plugin určený k použití ostatními. Kromě toho, že by měl obsahovat kompletní funkce, musí také dodržovat osvědčené postupy týkající se bezpečnosti, výkonnosti a udržovatelnosti.

Bezpečnostní aspekty

Bezpečnost je nejdůležitějším principem. Nikdy nesmíte důvěřovat datům, která zadají uživatelé. Všechna data získaná od uživatelů (např.…)$_GET$_POST$_COOKIEPřed použitím pro databázové dotazy, výstup na stránky nebo operace s soubory je nutné provést vhodné čištění, ověření a escapeování dat.

Pro data vypisovaná na HTML stránky se používá…esc_html()esc_attr()wp_kses_post()Pro funkce typu „escape“ je nutné použít specifické způsoby k označení speciálních znaků. U proměnných používaných v databázových dotazech je zásadní zajistit, aby byly tyto znaky správně zakódovány, aby nedošlo k chybám při zpracování dat.$wpdb->prepare()Při parametrizovaném dotazování metod se nikdy nesmí přímo spojovat proměnné do SQL příkazu. V pluginech by se mělo vždy používat toto postupování.defined(‘ABSPATH’) or die;To zabrání přímému přístupu k souborům.

Organizace kódu a internacionalizace

S rostoucími funkcemi pluginů se stává obtížným udržovat veškerý kód v jediném hlavním souboru. Správným postupem je rozdělit kód podle jeho funkcí do různých souborů. Hlavní soubor obvykle slouží k definování „hooků“ a základních procesů, zatímco nastavení stránek, funkce, definice tříd a podobně by měly být umístěny do samostatných souborů.includes/admin/public/V takovém podadresáři a prostřednictvím…require_onceZavedení.

Aby váš plugin mohl být používán uživateli po celém světě, je nutné podporovat internacionalizaci (i18n). To znamená, že všechny textové řetězce zobrazované v pluginu by měly využívat funkce pro překlady v WordPressu.__()_e()Zabalte zboží a připravte ho k odeslání.Text DomainNastavte jedinečný identifikátor (např. název adresáře s pluginy). V bloku komentářů na začátku souboru jsme to již definovali.Text Domain: my-hello-pluginV kódu by to mělo být použito následovně:

$ pozdrav = ‘<p><strong>’ . esc_html__( ‘您好,读者!欢迎阅读本文。’ , ’my-hello-plugin’ ) . ‘</strong></p>’;

Takto mohou překladatelé tento materiál používat..po.moTyto soubory obsahují překlady vašeho pluginu do různých jazyků.

Optimizace výkonnosti

Pluginy by měly co nejméně ovlivňovat výkon webové stránky. Vyhněte se provádění velkého množství dotazů do databáze nebo složitých výpočtů pokaždé, když se stránka načte, zejména na straně klienta („frontendu“). Správně využívejte API pro dočasné úložiště („Transients API“) v WordPressu k ukládání výsledků nákladných dotazů, které se často nemění. Například, pokud chcete uložit výsledek požadavku na API do mezipaměti, můžete postupovat následovně:

$data = get_transient( ‘my_plugin_api_data’ );
if ( false === $data ) {
    // 数据不存在或已过期,从API获取
    $data = wp_remote_retrieve_body( wp_remote_get( ‘https://api.example.com/data’ ) );
    // 将数据存储12小时
    set_transient( ‘my_plugin_api_data’, $data, 12 * HOUR_IN_SECONDS );
}
// 使用 $data

Kromě toho se ujistěte, že soubory CSS a JavaScript se načítají pouze na stránkách, kde jsou skutečně potřebné. Používejte vhodné techniky pro správné načítání těchto souborů.wp_enqueue_script()wp_enqueue_style()Funkce, doplněná o vhodné „hooky“ (např.…)wp_enqueue_scriptsPro načítání front-end zdrojů se používá… Pro back-end zdroje se pak používá…admin_enqueue_scriptsHák.

Závěr

Díky postupnému vedení v tomto článku jsme dokončili celý vývojový proces od jednoduchého pluginu “Hello World” až po praktický plugin s možnostmi konfigurace v pozadí a dodržováním základních principů bezpečnosti a uspořádání kódu. Klíčovým faktorem bylo pochopení a využití základních mechanismů WordPressu – systému hooků. Ten nám umožňuje rozšiřovat funkce platformy modulárním a neinvazivním způsobem. Ať už jde o úpravy obsahu (filtry) nebo provádění konkrétních úkolů (akce), hooky slouží jako most mezi vaším kódem a světem WordPressu.

Pamatujte, že vývoj kvalitních pluginů není jen o tom, aby funkce fungovaly. Zahrnuje také pečlivé zpracování uživatelských vstupů z hlediska bezpečnosti, přehlednou organizaci kódu, podporu internacionalizace a důkladné zvážení výkonu webové stránky. Od definice jasných hlaviček souborů pluginů přes vytváření menu a nastavení pomocí standardních API až po bezpečné zakódování výstupních dat – každý krok ovlivňuje kvalitu, bezpečnost a uživatelský zážitek z daného pluginu. Pokračujte v hlubším poznávání mnoha API a funkcí WordPress a budete schopni vytvořit pluginy, které jsou funkčně silné a odolné vůči chybám.

Časté dotazy

Co je potřeba pro vývoj doplňků (plug-inů)?

Potřebujete mít základní znalosti programovacího jazyka PHP, včetně proměnných, funkcí, polí, podmínek a cyklů – to jsou základní koncepty tohoto jazyka. Také je užitečné mít základní povědomí o HTML a CSS, protože pluginy často slouží k generování nebo úpravě front-end uživatelského rozhraní. Znalost základního používání WordPressu a jeho backend struktury usnadní vývojový proces.

Jak ladit můj WordPress plugin?

Nejprve se ujistěte, že…wp-config.phpV souboru je aktivován režim ladění WordPressu. To bylo nastaveno pomocí příslušných nastavení.define('WP_DEBUG', true);define('WP_DEBUG_LOG', true);Chybové zprávy budou zaznamenány do…wp-content/debug.logV souboru je to bezpečnější než přímo zobrazování na stránce. Kromě toho lze to kombinovat s dalšími metodami ochrany.error_log()Funkce mohou vypisovat hodnoty proměnných, nebo můžete použít nástroje pro vývojáře v prohlížeči – konkrétně panely “Síť” (Network) a “Konzola” (Console) – k prozkoumání problémů s front-end skripty a styly.

Můžu nahrát plugin, který jsem vyvinul, do oficiálního adresáře pluginů?

Možné to je, ale je potřeba splnit oficiální požadavky WordPressu na odeslání pluginů. To zahrnuje ujištění, že váš plugin splňuje licenci kompatibilní s GPL, dodržuje kódovací standardy WordPressu, že je bezpečný a neobsahuje žádný škodlivý obsah, a také poskytování jasných dokumentačních informací. Před odesláním doporučujeme pečlivě prostudovat oficiální příručku pro vývojáře pluginů a pokyny pro odeslání. Proces odeslání probíhá prostřednictvím systému určeného k odesílání pluginů na webu WordPress.org a následně je plugin posouzen.

Jaký je rozdíl mezi funkcemi pluginů a tem (témů)? Kdy by mělo být vhodné vytvářet pluginy?

Témata (Themes) ovládají především vzhled a uspořádání webové stránky a obvykle zahrnují šablony, styly a některé funkce související s jejich zobrazením. Naopak pluginy (Plugins) slouží k přidávání nebo úpravě funkcí webové stránky a jejich vliv je ve většině případů nezávislý na aktuálně použitém tématu. Dobrým pravidlem je: Pokud je funkce přímo spojena s vzhledem webové stránky (např. uspořádání stránek, barevné schéma), měla by být zařazena do tématu; pokud jde o obecnou, nezávislou funkci (např. kontaktní formulář, optimalizace pro vyhledávače, cacheování), která by měla být dostupná bez ohledu na změnu tématu, měla by být vyvinuta jako plugin. Toto pomáhá udržet oddělení funkcí od designu a zvyšuje flexibilitu webové stránky.