Od nuly: Kompletní průvodce vývojem pluginů pro WordPress a praktické návody.

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

Proč se mává vývojem pluginů pro WordPress?

WordPress, jako nejpopulárnější systém pro správu obsahu na světě, vyniká svou vysokou rozšiřitelností, která je způsobena především ekosystémem pluginů. Naučení se vývoje pluginů pro WordPress vám nejen umožní hluboce přizpůsobit funkce webových stránek podle vašich požadavků, ale také přeměnit vaše nápady na prodejné produkty a vstoupit na obrovský trh. Oproti používání pluginů třetích stran znamená vlastní vývoj jednodušší kód, vyšší bezpečnost a lepší optimalizaci výkonu, protože můžete přesně ovládat každou funkci.

Kromě toho vám zvládnutí této dovednosti výrazně zvyšuje hodnotu jako vývojáře. Ať už jde o poskytování zakázkových řešení pro zákazníky nebo vytváření vlastních nástrojů, pochopení základní architektury WordPressu a standardů vývoje pluginů je klíčovou výhodou. Umožňuje vám přejít z role pouhého uživatele na roli tvůrce, kdy dokážete WordPress porozumět a efektivně využívat.hookPoužívejte systémy, metody pro práci s daty a bezpečnostní mechanismy k vytvoření robustních aplikací.

Nastavení vývojového prostředí pro pluginy a základní struktura

Než začnete psát kód, je nezbytné mít profesionální lokální vývojové prostředí. Doporučujeme nástroje jako Local, DevKinsta nebo Docker, které vám pomohou rychle nastavit prostředí obsahující PHP, MySQL a webový server. Ujistěte se, že vaše verze PHP (doporučujeme verzi 7.4 nebo vyšší) je kompatibilní s cílovou verzí WordPress, a povolte zprávy o chybách – to usnadní ladění kódu.

Doporučujeme k přečtení. Začínáme od nuly: Vytvořte si svůj první WordPress plugin.

Nejzákladnější struktura WordPress pluginu se skládá z jediného hlavního souboru. Tento hlavní soubor musí obsahovat specifické hlavičkové poznámky („header comments“), aby ho WordPress mohl rozpoznat.

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.

Vytvořte svůj první soubor plug-inu.

Hlavní soubor pluginu se obvykle jmenuje podle názvu samotného pluginu, například… my-first-plugin.phpPotřebujete tento soubor umístit na /wp-content/plugins/ V samostatné složce v adresáři. Níže je uvedena nejzákladnější struktura kódu tohoto souboru:

<?php
/**
 * Plugin Name: 我的第一个定制插件
 * Plugin URI:  https://yourwebsite.com/my-first-plugin
 * Description: 这是一个用于学习 WordPress 插件开发的示例插件。
 * Version:     1.0.0
 * Author:      你的名字
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 */

Po uložení souboru bude tento plugin viditelný na stránce “Příslušenství” v administraci WordPress a můžete ho aktivovat. I když zatím nemá žádné funkce, úspěšně jste vytvořili plugin, který je rozpoznán systémem WordPress.

Porozumění a využití základních mechanismů WordPressu: hooky

Klíčovou filozofií vývoje pluginů pro WordPress je koncept “hooků” (anglicky “hooks”), který umožňuje vašemu kódu v určitých okamžicích „zapojit se“ do hlavního prováděcího procesu WordPressu, aniž by bylo nutné měnit samotné základní soubory WordPressu. Hooky se dělí především na dvě kategorie: akce (Actions) a filtry (Filters).

Provedení úkolu pomocí akčních háčků

Akční háčky vám umožňují spouštět vlastní funkce při nastání konkrétních událostí. Například po zveřejnění článku byste mohli chtít odeslat e-mailovou notifikaci.publish_post Jedná se o typický akční hook („action hook“). Používáte ho… add_action() Funkce váže vaši vlastní funkci na tento „hook“.

Doporučujeme k přečtení. Podrobné vysvětlení: Průvodce vývojem nových témat a analýzou základní architektury WordPressu.

Upravování dat pomocí filtrovacích hooků

Filtrovací háčky vám umožňují upravovat data, která WordPress přenáší během zpracování. Například pokud chcete změnit obsah nadpisu článku.the_title Jedná se o filtrovací hook. Používáte ho k provedení určitých operací na datech před jejich zpracováním. add_filter() Funkce slouží k připojení vaší zpracovatelské funkce; tato funkce přijímá původní data a musí vrátit upravená data.

Níže je příklad použití akcí a filtrů současně:

// 1. 定义一个在文章发布时执行的动作函数
function myplugin_on_post_publish( $post_id ) {
    // 获取文章对象
    $post = get_post( $post_id );
    // 记录日志或执行其他操作
    error_log( "文章《{$post->post_title}》已发布,ID: {$post_id}" );
}
// 将上述函数挂接到 ‘publish_post’ 动作钩子
add_action( 'publish_post', 'myplugin_on_post_publish' );

// 2. 定义一个修改文章标题末尾内容的过滤器函数
function myplugin_add_to_title( $title ) {
    // 仅在主循环的文章标题中生效
    if ( is_single() && in_the_loop() ) {
        return $title . ' - [推荐阅读]';
    }
    return $title;
}
// 将上述函数挂接到 ‘the_title’ 过滤器钩子
add_filter( 'the_title', 'myplugin_add_to_title' );

Praktický návod: Vytvoření vlastního pluginu s administrátorskou stránkou

Užitečný plugin obvykle vyžaduje stránky pro konfiguraci v administraci WordPressu. Vytvoříme ukázkový plugin, který přidá podmenü do nabídky “Nastavení” v administraci a umožní ukládat a číst určité nastavení.

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ření menu a stránek pro administraci v pozadí

Nejprve potřebujeme použít… add_action('admin_menu', ...) Hooky se registrová při inicializaci administrátorského menu a umožňuje nám přidat vlastní položky do tohoto menu. Používáme ho k tomu, abychom… add_options_page() Funkce slouží k přidání podstránky do menu “Nastavení”.

Zpracování dat z formulářů a bezpečnostní ověření

Na stránce pro správu obvykle máme formulář, který umožňuje uživatelům provádět nastavení. Při zpracování odeslání tohoto formuláře je nutné provést bezpečnostní ověření, včetně kontroly uživatelských oprávnění, použití „nonce“ k prevenci podvržení požadavků ze strany jiných webových stránek (CSRF – Cross-Site Request Forgery), stejně jako čištění a ověřování vložených dat.

Níže je ukázka kódu, který implementuje tuto funkci:

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

// 钩入 admin_menu 来添加菜单
function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',       // 所需权限(管理员)
        'myplugin-settings',    // 菜单 slug
        'myplugin_render_settings_page' // 渲染页面的回调函数
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 渲染设置页面的回调函数
function myplugin_render_settings_page() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        wp_die( '权限不足。' );
    }
    ?&gt;
    <div class="wrap">
        <h1>Nastavení mého pluginu</h1>
        <form method="post" action="/cs/options.php/" data-trp-original-action="options.php">
            <?php
            // 输出必要的设置字段和 nonce 字段
            settings_fields( 'myplugin_settings_group' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="cs"/></form>
    </div>
    &lt;?php
}

// 初始化插件设置,注册配置项
function myplugin_settings_init() {
    // 注册一个新的设置组‘myplugin_settings_group’和页面‘myplugin-settings’
    register_setting( &#039;myplugin_settings_group&#039;, &#039;myplugin_custom_message&#039; );

// 在页面‘myplugin-settings’上添加一个新的设置区域
    add_settings_section(
        &#039;myplugin_section&#039;,
        &#039;自定义消息设置&#039;,
        null,
        &#039;myplugin-settings&#039;
    );

// 向该区域添加一个字段
    add_settings_field(
        &#039;myplugin_field&#039;,
        &#039;欢迎消息&#039;,
        &#039;myplugin_field_render&#039;,
        &#039;myplugin-settings&#039;,
        &#039;myplugin_section&#039;
    );
}
add_action( &#039;admin_init&#039;, &#039;myplugin_settings_init&#039; );

// 渲染设置字段的函数
function myplugin_field_render() {
    $option = get_option( &#039;myplugin_custom_message&#039;, &#039;你好,访客!&#039; );
    echo &quot;<input type='text' name='myplugin_custom_message' value='" . esc_attr( $option ) . "' />";
}

// 在前端使用保存的选项
function myplugin_display_message() {
    $message = get_option( 'myplugin_custom_message', '你好,访客!' );
    echo '<p class="myplugin-message">'`. esc_html($message)`.'</p>';
}
// 你可以将此函数通过短码或钩子在前端调用,例如:
add_action( 'wp_footer', 'myplugin_display_message' );

Bezpečnost pluginů, internacionalizace a příprava k vydání

Před vydáním dokončeného pluginu musí projít přísným zpracováním z hlediska bezpečnosti, internacionalizace a balení.

Bezpečnost je nesmírně důležitá. Všechna data získaná z uživatelského vstupu (např. $_GET, $_POST, $_REQUEST) musí být ověřena a očištěna. WordPress poskytuje řadu funkcí, které vám v tom pomohou. sanitize_text_field(), esc_html(), esc_url()wp_strip_all_tags() Používá se k escapeování dat před výstupem. Nikdy nevěřte vstupu uživatelů.

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.

Aby bylo možné používat tento plugin uživatelům po celém světě, je nutné provést přípravu na internacionalizaci (i18n). To znamená, že všechny textové řetězce zobrazované v pluginu by měly být přeloženy do různých jazyků. __()_e() Pak funkce zabalte do vhodného balíčku a nastavte správný textový domén (Text Domain). Díky tomu budou moci překladatelé používat soubory typu .po/.mo k překladu vašeho doplňku.

Na závěr je třeba pečlivě vytvořit soubor readme.txt, jehož formát musí odpovídat specifikacím WordPress.org. Ujistěte se, že kód vašeho pluginu dodržuje standardy kódování WordPressu, odstraňte veškerý ladící kód a soubor komprimujte do formátu zip. Můžete svůj plugin zveřejnit v oficiálním adresáři pluginů WordPressu nebo jej distribuovat na svém osobním webu.

Závěr

Vývoj pluginů pro WordPress je proces kombinování kreativity s výkonnou platformou. Začali jsme porozuměním jejich důležitosti, postupně jsme si nastavili potřebné prostředí a vytvořili základní soubory pro naše pluginy. Díky důkladnému studiu a praktickému využití dvou klíčových mechanismů – akčních hooků (action hooks) a filtrovacích hooků (filter hooks) – jsme získali kontrolu nad interakcí s WordPressem. Následně jsme v praxi vytvořili kompletní plugin s administrátorskými stránkami, který zahrnoval celý proces vytváření menu, nastavování registrací, zabezpečování dat a zobrazení obsahu na stránkách. Na závěr jsme se zaměřili na klíčové aspekty, které ovlivňují kvalitu a šířitelnost pluginů: bezpečnostní postupy, přípravu na internacionalizaci a balení pluginů pro jejich vydání. Dodržováním těchto kroků a osvědčených postupů budete schopni vytvořit profesionální pluginy pro WordPress, které jsou funkční, bezpečné, spolehlivé a snadno distribuovatelné, a tím skutečně uvolnit jejich neomezený potenciál.

Časté dotazy

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

Potřebujete mít základní znalosti programovacího jazyka PHP, protože jádro WordPressu i jeho pluginy jsou napsány v PHP. Stejně tak je důležité mít základní povědomí o HTML, CSS a JavaScriptu, které slouží k zpracování vzhledu a interakcí na straně uživatele. Pochopení základních konceptů databáze MySQL (jako jsou dotazy, přidávání, měnění a vyhledávání dat) bude také užitečné, protože WordPress používá tuto databázi k ukládání informací.

Musí být hlavní soubor pluginu pojmenován konkrétním názvem?

Ne, hlavní soubor pluginu může mít libovolný název, avšak z důvodu přehlednosti a standardizace se obvykle doporučuje použít název v angličtině nebo v pínské transkripci, který odpovídá názvu samotného pluginu. Jediným požadavkem je, aby tento PHP soubor obsahoval správné poznámky („header comments“) týkající se pluginu – právě díky těmto poznámkám WordPress rozpoznává a načítá pluginy.

Jaký je zásadní rozdíl mezi akčními háčky (action hooks) a filtrovacími háčky (filter hooks)?

Akční háčky slouží k provedení určitého kódu při nastání konkrétní události; nepožadují, aby vaše funkce vracela hodnotu, jejich účelem je provést nějakou úlohu nebo operaci. Filtrační háčky naopak slouží k úpravě dat – vyžadují, aby vaše funkce přijala určitou hodnotu a musí vrátit upravenou hodnotu. Stručně řečeno: akce znamenají “něco udělat”, zatímco filtrování znamená “něco změnit”.

Jak zajistit, aby můj plugin nekonfliktoval s jinými pluginy?

Přidávání jedinečné předpony ke všem vašim funkcím, třídám, konstantám a názvům možností je nejlepší praxí pro prevenci konfliktů. Například, nepoužívejte…get_data()Pro takové univerzální názvy funkcí by se mělo použít něco jednoznačného a snadno pochopitelného.myplugin_get_data()Zároveň uzavření vašeho kódu do tříd nebo jmenných prostorů umožňuje efektivněji izolovat proměnné a funkce.