Kompletní průvodce vývojem WordPress pluginů – postupně si vybudujete svůj první plugin od nuly.

Čtení za 3 minuty.
2026-03-11
2026-06-03
2,443
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 rozsáhlém světě internetu si WordPress získal velkou popularitu díky své vysoké rozšiřitelnosti a dominuje mezi systémy pro správu obsahu. Klíčem k této rozšiřitelnosti jsou právě pluginy. Díky vývoji pluginů pro WordPress můžete do svých webových stránek přidat jakékoli funkce, které si dokážete představit. Tento článek vás provede krok za krokem od začátku a pomůže vám vytvořit svůj první WordPress plugin, abyste lépe pochopili jeho základní strukturu a proces vývoje.

Základy WordPress pluginů a nastavení vývojového prostředí

Před zahájením kódování je velmi důležité pochopit podstatu WordPress pluginů a vytvořit vhodné vývojové prostředí. Plugin je v podstatě jedna nebo více PHP souborů, které dodržují specifikace WordPressu a fungují prostřednictvím určitých…钩子(Hooks) Interagují s hlavními systémy.

Základní definice pluginu

Každý plugin musí mít jediný hlavní soubor, ve kterém jsou informace o pluginu deklarovány pomocí poznámek v určitém formátu. Tyto poznámky slouží k tomu, aby WordPress na stránce pro správu pluginů rozpoznal a zobrazil název pluginu, popis, verzi a další metadata.

Doporučujeme k přečtení. Odhalení tajemství vývoje doplňků: Vytvořte si svůj první rozšíření od nuly

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

Pro efektivní a bezpečné vývojové procesy je vysoce doporučeno využívat lokální serverové prostředí. Můžete zvolit nástroje jako XAMPP, MAMP, Local by Flywheel nebo Docker. Základní požadavky zahrnují nainstalování PHP (verze musí být kompatibilní s vaším cílovým serverem), MySQL/MariaDB a Apache/Nginx. Poté stáhněte nejnovější základní soubory WordPressu a dokončete jejich instalaci.

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í plugin: Pomůcka pro výběr pozdravů

Teď se pustíme do vytvoření jednoduchého pluginu. Funkce tohoto pluginu je taková, že na konci obsahu článků na webu automaticky přidá vlastní výzvu (přivítání).

Nejprve, ve WordPressu… wp-content/plugins V adresáři vytvořte novou složku s názvem my-first-greeting-pluginPoté v této složce vytvořte hlavní PHP soubor, který můžete nazvat… my-first-greeting-plugin.php

Prohlášení o informacích v hlavičce pluginu

Otevřete hlavní soubor a zadejte následující kód pro definování pluginu:

<?php
/**
 * Plugin Name:       我的第一个问候语插件
 * Plugin URI:        https://yourwebsite.com/my-first-greeting-plugin
 * Description:       这是一个练习用的插件,用于在文章末尾添加问候语。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-greeting-plugin
 */

Po uložení souboru přejděte na stránku “Příslušenství” (Plugins) v administraci WordPressu. Měl byste vidět, že se tento nový plugin objevil v seznamu příslušenství, a můžete ho aktivovat. Samozřejmě, zatím nemá žádné funkce.

Doporučujeme k přečtení. 10 klíčových tipů a praktických návodů pro optimalizaci výkonnosti e-shopů na platformě WooCommerce

Použijte „hooky“ (závěsy/interakce) k přidání klíčových funkcí.

Funkčnost WordPressu je do značné míry závislá na mechanismu “hooků” („zámků“), které jsou rozděleny do různých kategorií.动作钩子(ACTION Hooks) a过滤器钩子(Filter Hooks). Chceme přidat text za obsah článku a k tomu potřebujeme použít… the_content Tento filtrovací hook.

Pod poznámkou v hlavičce hlavního souboru přidejte následující funkce a háčky:

// 定义向文章内容添加问候语的函数
function mfgp_add_greeting_to_content( $content ) {
    // 确保只在主循环的单篇文章页面显示
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $greeting = '<p style="color:#666; font-style:italic;">Děkujeme, že jste si přečetli tento článek! Přejeme vám krásný den!</p>';
        $content .= $greeting;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器钩子上
add_filter( 'the_content', 'mfgp_add_greeting_to_content' );

Po uložení souboru a aktivaci pluginu otevřete libovolný článek na webu, přečtěte ho až do konce – měli byste vidět přidané pozdravení. Tímto jednoduchým příkladem jste si vyzkoušeli nejzákladnější koncepty vývoje pluginů: deklaraci pluginu, napsání funkčních metod a…add_filteradd_actionPřipojte funkci k správnému „hooku“.

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.

Vylepšení funkcí pluginu: Přidána stránka pro správu nastavení.

Zralý plugin obvykle umožňuje uživatelům provádět konfiguraci v pozadí. Nyní přidáme pro plugin určený k zobrazování pozdravů jednoduchou stránku nastavení, která umožní administrátorům personalizovat texty zobrazované uživatelům.

Vytvořit položky správního menu

Nejprve potřebujeme použít…add_actionHook volá funkci, která poté použije… add_options_page Funkce přidává podstránku do menu “Nastavení” v administraci WordPressu.

V hlavním souboru pokračujte v přidávání následujícího kódu:

Doporučujeme k přečtení. Od nuly ke jedničce: Kompletní průvodce vývojem WordPress pluginů a praktické tutoriály

// 添加设置菜单
function mfgp_add_admin_menu() {
    add_options_page(
        '问候语插件设置',          // 页面标题
        '自定义问候语',           // 菜单标题
        'manage_options',         // 权限要求(管理员)
        'my-greeting-plugin',     // 菜单 Slug
        'mfgp_settings_page_html' // 用于输出页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' );

Vytvoření stránky pro nastavení a logiky pro ukládání

Nyní potřebujeme definovat výše uvedenou funkci na zpáteční volání (callback function). mfgp_settings_page_html Zobrazíme HTML formulář určený k nastavení stránek a zpracujeme uložení dat z tohoto formuláře. WordPress poskytuje API pro nastavení, které tento proces zjednodušuje, ale pro lepší pochopení postupu nejprve použijeme základní metody.

// 定义设置页面的 HTML 结构
function mfgp_settings_page_html() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }

// 处理表单提交(非设置API方式)
    if ( isset( $_POST['mfgp_greeting_text'] ) ) {
        // 验证 Nonce 确保请求来源安全
        check_admin_referer( 'mfgp_save_settings' );
        // 清理并保存输入的数据
        $greeting_text = sanitize_textarea_field( $_POST['mfgp_greeting_text'] );
        update_option( 'mfgp_custom_greeting', $greeting_text );
        echo '<div class="notice notice-success is-dismissible"><p>Nastavení bylo uloženo!</p></div>';
    }

// 获取已保存的问候语
    $saved_greeting = get_option( 'mfgp_custom_greeting', '感谢您阅读本文!祝你拥有美好的一天!' );
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
        <form method="post" action="">
            <?php wp_nonce_field( 'mfgp_save_settings' ); ?>
            <table class="form-table">
                <tr>
                    <th scope="row"><label for="mfgp_greeting_text">Vlastní pozdrav</label></th>
                    <td>
                        <textarea name="mfgp_greeting_text" id="mfgp_greeting_text" rows="5" cols="50" class="large-text"><?php echo esc_textarea( $saved_greeting ); ?></textarea>
                        <p class="description">Tento text bude zobrazen na konci každého článku.</p>
                    </td>
                </tr>
            </table>
            <?php submit_button( '保存更改' ); ?>
        <input type="hidden" name="trp-form-language" value="cs"/></form>
    </div>
    <br />&lt;?php
}

Aktualizovat funkci pro výstup na frontendu.

Na závěr potřebujeme upravit předchozí funkci pro výstup na straně klienta (frontend), aby zobrazovala data z databáze.get_optionZde se závětová věta čte z určitého zdroje, nikoli z pevně zakódovaného textu.

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 mfgp_add_greeting_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        // 从数据库选项中获取问候语,如果没有则使用默认值
        $greeting_text = get_option( 'mfgp_custom_greeting', '感谢您阅读本文!祝你拥有美好的一天!' );
        if ( ! empty( $greeting_text ) ) {
            $greeting = '<p style="color:#666; font-style:italic;">'`. esc_html($greeting_text)`.'</p>';
            $content .= $greeting;
        }
    }
    return $content;
}

Nyní mohou administrátoři volně upravovat zobrazovaný text na stránce “Nastavení” -> “Vlastní pozdravy”, přičemž změny se okamžitě projeví na uživatelském rozhraní.

Příprava vydání pluginu: internacionalizace a zvýšení bezpečnosti

Než sdílíte plugin s ostatními nebo ho odevzdáte do oficiálního katalogu, je potřeba provést ještě několik důležitých úkolů, zejména týkajících se internacionalizace a zvýšení bezpečnosti.

Implementace internacionalizace textu

Internacionalizace (i18n) umožňuje překlad vašeho pluginu do dalších jazyků. Všechny textové stránky určené pro uživatele je třeba obalit do speciálních funkcí. Upravte texty v našem pluginu:

1. V poznámkách na začátku pluginu jsme již všechno definovali. Text Domain
2. V kódu použijte… ()esc_html() Funkce obaluje řetězec. Například:

    // 在设置页面函数中
    $greeting_text = get_option( 'mfgp_custom_greeting', __( ‘感谢您阅读本文!祝你拥有美好的一天!’, ‘my-first-greeting-plugin’ ) );
    echo ‘<h1>’ . esc_html__( ‘问候语插件设置’, ‘my-first-greeting-plugin’ ) . ‘</h1>’\n' ; 

// Ve funkci výstupu na frontendu (poznámka: výstup na frontend obvykle nevyžaduje překlad, pokud to není požadováno tématem nebo uživatelem). 
    // Pokud však pozdrav sám o sobě vyžaduje více jazyků, může být zapotřebí komplexnější logika.

3. Použijte nástroje, jako je Poedit, k vytvoření. .pot Šablony – překladatelé mohou na základě nich vytvářet nové dokumenty. .po.mo Dokumenty.

Zvýšit úroveň bezpečnostní ochrany

Bezpečnost je velmi důležitá. Použili jsme již některé bezpečnostní funkce, jako např.sanitize_textarea_fieldesc_htmlesc_textareawp_nonce_fieldKromě toho je také třeba věnovat pozornost následujícím bodům:
* 权限检查:在管理页面函数开始处使用 current_user_can Proveďte kontrolu.
* 数据验证与清理:对所有用户输入(如 $_POST, $_GET)进行验证(是否符合预期格式)和清理(移除非法字符)。
* 非竞态条件更新:对于重要的选项,考虑使用 wp_options Při práci s tabulkami je bezpečnějším způsobem použít API Settings, které obsahuje vestavěné funkce pro kontrolu nekonkurenčnosti (nonce) a oprávnění.

Závěr

Díky této příručce jsme dokončili celý proces vývoje a publikování funkčního WordPress pluginu – od jeho vytvoření až po jeho uveřejnění. Začali jsme porozuměním základům pluginů a vytvořili hlavní soubor obsahující standardní informace o pluginu. Poté jsme si procvičili nejzákladnější mechanismus „hooků“ v WordPressu pomocí jednoduché funkce pro výpis pozdravu. Následně jsme pluginu přidali stránku pro nastavení v administraci, čímž jsme umožnili uživatelům nastavit jeho chování podle svých požadavků. Nakonec jsme se zaměřili na klíčové kroky před publikováním pluginu: internacionalizaci a zvýšení jeho bezpečnosti. Každý krok zahrnoval použití základních funkcí WordPressu a osvědčených postupů. Po zvládnutí těchto základních znalostí můžete začít vytvářet složitější a kreativnější pluginy a přispívat tak k rozvoji celého WordPress ekosystému.

Časté dotazy

Jaké jsou předpokládané znalosti potřebné k vývoji pluginů pro WordPress?

Potřebujete mít základní znalosti programování v PHP, porozumění HTML a CSS, a také určitou znalost základních funkcí WordPressu (jako jsou články, stránky, menu). Znalost objektového programování (OOP) není nutná, ale velmi by vám pomohla při vývoji rozsáhlejších pluginů.

Proč se můj plugin po aktivaci nezobrazí v nabídce v pozadí (v backend menu)?

Nejčastější příčinou jsou problémy s oprávněními. Proveďte kontrolu toho, jakým způsobem provádíte volání (tzv. „calling“).add_options_pagePři použití podobných funkcí je důležité zkontrolovat, zda je druhý parametr (capability) nastaven správně. ‘manage_options’Kromě toho se ujistěte, že vaše funkce byla správně implementována a funguje podle očekávání.add_action( ‘admin_menu’, ...)Hook byl nasazen a neexistují žádné gramatické chyby, které by způsobily, že funkce nebyla spuštěna. Můžete to přidat na začátek kódu.error_logFunkce slouží k ladění kódu.

Jak ladit můj WordPress plugin?

Nejprve se ujistěte, že ve vašem… wp-config.php V souboru je aktivován režim ladění WordPressu: define( ‘WP_DEBUG’, true );define( ‘WP_DEBUG_LOG’, true );Tímto způsobem budou chybové zprávy zaznamenány. /wp-content/debug.log Ve souboru. Dále lze pro ladění front-end části použít kartice “Konzola” a “Síť” v nástrojích pro vývojáře prohlížeče. U složitější logiky je vhodné…error_log( print_r( $variable, true ) );Vypisování hodnot proměnných do logů je běžnou metodou.

Jak je můj plugin kompatibilní s ostatními pluginy nebo šablonami?

Aby byla zajištěna maximální kompatibilita, váš plugin by měl: 1) Používat jedinečné předpony pro pojmenování všech funkcí, tříd, proměnných a možností (například my používáme ).mfgp_Při pojmenovávání funkcí nebo tříd se snažte vyhnout konfliktům názvů. 2) Při přidávání nebo upravování stylů frontendu nebo backendu používejte pokud možno jedinečné názvy selektorů. 3) Pokud je to možné, poskytněte filtrační háky.apply_filtersNezapomeňte použít funkci „hook“, která umožní ostatním vývojářům upravit chování vašeho pluginu. 4) Vyhněte se přímým úpravám tabulek databáze nebo souborů jádra WordPressu.