Úvod do vývoje pluginů pro WordPress: Postavte si své první funkční rozšíření od nuly

Čtení za 3 minuty.
2026-03-11
2026-06-04
1,927
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 rozhodnout pro vývoj pluginů pro WordPress?

WordPress, jako nejpopulárnější systém pro správu obsahu na světě, vděčí své vysoké rozšiřitelnosti především své architektuře plug-inů. Vývoj vlastních plug-inů znamená, že nejste omezeni funkcemi stávajících plug-inů a můžete přesně splnit specifické požadavky svého webu nebo klientů. Ať už jde o přidání jednoduchého kódu nebo vytvoření složitého panelu pro správu, plug-iny umožňují oddělit vaši funkční logiku od tématu, čímž je zajištěno, že funkce nebudou ovlivněny při aktualizaci tématu.

Z hlediska učení je pochopení vývoje pluginů nezbytnou cestou k proniknutí do jádra WordPressu. Díky tomu se seznámíte se dvěma základními koncepty – akčními háčky (Action Hooks) a filtrovacími háčky (Filter Hooks), které jsou základem modulárnosti a rozšiřitelnosti WordPressu. Ovládnutí vývoje pluginů nejenže zlepší vaše technické dovednosti, ale také vám otevře nové pracovní příležitosti a může vám dokonce umožnit vytvářet prodejný digitální produkt.

Přípravné práce před vývojem

Než začnete psát první řádek kódu, potřebujete vhodné vývojové prostředí. To obvykle zahrnuje lokální serverové prostředí (např. Local by Flywheel, XAMPP nebo MAMP), editor kódu (např. VS Code, PhpStorm) a testovací webovou stránku s nainstalovaným WordPressem. Ujistěte se, že verze PHP v testovacím prostředí odpovídá verzi používané v produkčním online prostředí, abyste předešli kompatibilitním problémům.

Doporučujeme k přečtení. Ovládněte základy WordPressu: kompletní praktický návod od nastavení až po optimalizaci.

Porozumění základní struktuře pluginu

Nejzákladnější WordPress plugin může obsahovat pouze jediný PHP soubor. Plugin s dobře strukturovanou organizací však obvykle zahrnuje více adresářů a souborů, což napomáhá lepšímu uspořádání obsahu. Typický adresář pluginu může mít následující strukturu:
– Hlavní soubor pluginu (např.) my-first-plugin.phpToto je vstupní bod pluginu, který obsahuje informace o hlavičce pluginu.
- includes/ Obsah: Obsahuje soubory s klíčovými funkcemi nebo třídami.
- admin/ Katalog: Obsahuje kód související s backendovým administrátorským rozhraním.
- public/ Katalog: Slouží k uložení kódu určeného pro webovou frontend stránku.
- assets/ Katalog: Slouží k uložení statických zdrojů, jako je JavaScript, CSS a obrázky.
- languages/ Katalog: Slouží k uložení souborů s mezinárodními překlady (.po/.mo).

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.

Nezbytné informace o hlavičkách pluginů

Každý plugin pro WordPress musí obsahovat standardní poznámku s hlavičkou pluginu na začátku svého hlavního PHP souboru – to je klíčové pro to, aby WordPress tento plugin rozpoznal. Níže je uveden jeden z nejzákladnějších příkladů:

<?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
 * Domain Path:       /languages
 */

Mezi nimi,Plugin Name Jedná se o povinné pole; vše ostatní je volitelné. Pro úplnost a udržovatelnost pluginu však doporučujeme vyplnit všechny relevantní informace.Text Domain Použito pro internacionalizaci.Domain Path Ukazuje na adresář s jazykovými soubory.

Vytvořte svůj první plugin: jednoduchou funkci pro zdravování.

Pojďme to vyzkoušet na konkrétním příkladu. Vytvoříme plugin, který zobrazí na začátku obsahu článků na webu přizpůsobitelné pozdravné zprávy.

Vytvořte soubor a adresář pro plugin.

Nejprve, ve složce s instalací WordPressu: wp-content/plugins/ V té složce vytvořte novou složku a pojmenujte ji… my-greeting-pluginPoté v této složce vytvořte hlavní PHP soubor a pojmenujte ho… my-greeting-plugin.phpA zkopírujte výše uvedené informace o pluginových hlavičkách do tohoto obsahu.

Doporučujeme k přečtení. Jak vybrat a vytvořit kvalitní WordPress plugin: Od začátků až po pokročilé úrovně

Použití hooků k přidání funkcí

WordPress funguje pomocí systému hooků. Chceme přidat informace před obsah článku, a k tomu potřebujeme využít tyto hooky. the_content Filtrovací háčky. Do vašeho hlavního pluginového souboru přidejte následující funkce a volání háčků:

/**
 * 在文章内容前添加问候语
 *
 * @param string $content 原始的文章内容。
 * @return string 修改后的文章内容。
 */
function mgp_add_greeting_to_content( $content ) {
    $greeting_text = get_option( 'mgp_greeting_text', '欢迎阅读!' ); // 从数据库获取设置,默认为“欢迎阅读!”
    $custom_greeting = '<div class="mgp-greeting"><p><strong>'`. esc_html($greeting_text)`.'</strong></p></div>';

// 仅对主循环中的单篇文章页面生效
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $custom_greeting . $content;
    }
    return $content;
}
// 将函数挂载到 `the_content` 过滤器
add_filter( 'the_content', 'mgp_add_greeting_to_content' );

Tento kód definuje funkci. mgp_add_greeting_to_contentPřijímá obsah článku a před něj přidává kontejner typu DIV obsahující pozdrav. add_filter() Funkce – Připojíme naše vlastní funkce k systému WordPress. the_content Filtr je aktivní. Logické podmínky uvnitř funkce zajišťují, že pozdrav se zobrazí pouze v hlavním cyklu stránky jednotlivého článku na předním rozhraní a neovlivní stránky s archivy či další funkce (např. nástroje).

Vytvořte jednoduchou stránku pro správu nastavení.

Aby uživatelé mohli přizpůsobit text pozdravů, potřebujeme přidat jednoduchou stránku pro nastavení. To zahrnuje použití API správního menu WordPressu. Pokračujte v přidávání následujícího kódu do hlavního souboru pluginu:

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.
/**
 * 注册插件设置菜单和页面
 */
function mgp_register_admin_menu() {
    add_options_page(
        '问候语设置',           // 页面标题
        '问候语插件设置',       // 菜单标题
        'manage_options',      // 所需权限
        'my-greeting-plugin',  // 菜单slug
        'mgp_render_settings_page' // 用于输出页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mgp_register_admin_menu' );

/**
 * 渲染设置页面的内容
 */
function mgp_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Nastavení doplňku pro pozdravy</h1>
        <form method="post" action="/cs/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mgp_settings_group' ); // 输出设置组和非ce字段
            do_settings_sections( 'my-greeting-plugin' ); // 输出设置区域
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="cs"/></form>
    </div>
    <?php
}

/**
 * 初始化插件设置
 */
function mgp_initialize_settings() {
    // 注册一个设置
    register_setting(
        'mgp_settings_group', // 设置组名
        'mgp_greeting_text',  // 选项名,对应数据库中的键
        array( // 可选的验证回调函数
            'sanitize_callback' => 'sanitize_text_field',
            'default' =&gt; '欢迎阅读!'
        )
    );

// 添加一个设置区域
    add_settings_section(
        'mgp_main_section',           // 区域ID
        '主要设置',                   // 区域标题
        null,                         // 区域介绍的回调函数(此处不需要)
        'my-greeting-plugin'          // 页面slug
    );

// 向区域中添加一个字段
    add_settings_field(
        'mgp_greeting_field',         // 字段ID
        '问候语文本',                 // 字段标签
        'mgp_greeting_field_callback', // 用于输出字段HTML的回调函数
        'my-greeting-plugin',         // 页面slug
        'mgp_main_section'            // 区域ID
    );
}
add_action( 'admin_init', 'mgp_initialize_settings' );

/**
 * 渲染问候语文本输入字段
 */
function mgp_greeting_field_callback() {
    $greeting = get_option( 'mgp_greeting_text', '欢迎阅读!' );
    echo '<input type="text" name="mgp_greeting_text" value="' . esc_attr( $greeting ) . '" class="regular-text" />'; echo '
    echo '<p class="description">Tento text bude zobrazen na vrcholu každého článku na vašem webu.</p>';
}

Tento kód provedl následující úkoly:
1. Použijte add_action( 'admin_menu', ... ) Pod menu “Nastavení” byla přidána podmenüová stránka.
2. Použijte add_action( 'admin_init', ... ) Iniciační nastavení zahrnuje možnost registrace databáze, oblast pro nastavení a vstupní pole.
3. 定义了渲染设置页面表单和字段的函数。
Nyní se přihlaste do svého WordPress administrátorského účtu a v nabídce “Nastavení” najdete položku “Nastavení pluginu Pozdravy”. Zde můžete upravit text pozdravů a okamžitě uvidíte výsledky ve článcích zobrazených na webových stránkách.

Nejlepší postupy a pokročilé praktiky v vývoji doplňků (plug-inů)

Po dokončení základních funkcí vám dodržování osvědčených postupů (best practices) pomůže vytvořit profesionálnější, bezpečnější a snadněji udržovatelný plugin.

Bezpečnost je nejvyšším prioritním.

Nikdy nedůvěřujte vstupním údajům uživatelů. V pluginech by měly být všechny daty získané z externích zdrojů (např.…) $_GET$_POST$_COOKIE Všechny výstupy z databázových dotazů (nebo jiných zdrojů dat) musí být před jejich výstupem nebo použitím ověřeny, očištěny nebo přeformátovány (např. pomocí escape funkcí).
– Vyjádření pomocí escape znaků: Použijte esc_html()esc_attr()esc_url()wp_kses_post() Funkce jako…
– Očistěte vstupní data: Použijte… sanitize_text_field()sanitize_email()intval() Funkce jako…
– Bezpečnost databází: Použití $wpdb Pro vyhledávání použijte metody dané třídy, nebo využijte… prepare() Metody pro parametrizované dotazy slouží k zabránění útokům typu SQL injection.
– Kontrola oprávnění: Před použitím správních stránek nebo prováděním citlivých operací proveďte kontrolu oprávnění. current_user_can() Zkontrolujte uživatelská oprávnění a použijte je. check_admin_referer() Ověřování pole „nonce“ slouží k zabránění podvržení přesahových požadavků (Cross-Site Request Forgery – CSRF).

Doporučujeme k přečtení. Naučte se základní techniky WordPressu a vytvořte profesionální webové stránky, které budou funkční i esteticky příjemné.

Implementace internacionalizace (i18n)

Aby váš plugin mohl být používán uživateli po celém světě, je nutné podporovat vícejazyčné překlady. K tomu budete muset využít funkce pro překlad v WordPressu k zabalení všech textových zpráv určených pro uživatele. Změňte tedy výstup textových zpráv v původním kódu:

// 在插件头信息中已定义 Text Domain: my-first-plugin
$greeting_text = get_option( 'mgp_greeting_text', __( '欢迎阅读!', 'my-first-plugin' ) );

// 在管理菜单函数中
add_options_page(
    __( '问候语设置', 'my-first-plugin' ),
    __( '问候语插件设置', 'my-first-plugin' ),
    'manage_options',
    'my-greeting-plugin',
    'mgp_render_settings_page'
);

Poté můžete použít nástroje, jako je Poedit, k extrakci řetězců z zdrojového kódu pluginů a jejich následnému vytvoření. .pot Šablony souborů – překladatelé mohou na základě nich vytvářet verze dokumentů v různých jazycích. .po.mo Soubor a umístěte ho do pluginu. /languages Obsah.

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.

Organizace kódu a optimalizace výkonu

S rostoucími funkcemi pluginů je rozdělení kódu do různých souborů rozumným krokem. Použití objektově orientovaného programování (OOP) a tříd k organizaci kódu může zvýšit jeho čitelnost a znovupoužitelnost. Co se týká zdrojových souborů (CSS, JS), je vhodné… wp_enqueue_style()wp_enqueue_script() Funkce je použita ve správném „hooku“ (tj. v příslušném okamžiku běhu programu). wp_enqueue_scriptsadmin_enqueue_scriptsData se načítají podle potřeby a jsou určeny konkrétní verze závislostí. Vyhněte se přímým, náročným dotazům do databáze v pluginu a zvažte použití API Transients pro ukládání do mezipaměti nekritických dat.

Závěr

Začali jste vytvořením jednoduchého PHP souboru a přidáním standardních informací o hlavičce pluginu, poté jste využili akční a filtrovací háčky k integraci do životního cyklu WordPressu, a nakonec jste vytvořili uživatelské rozhraní a dodržovali osvědčené postupy z hlediska bezpečnosti a internacionalizace. Tento “přivětovací plugin”, ačkoliv jednoduchý, úplně demonstruje základní postupy vývoje pluginů: plánování funkcí, připojení háčků, zpracování dat a vytvoření uživatelského rozhraní. Nezapomeňte, že neustálé studium oficiálních příruček, prozkoumávání kódu kvalitních open-source pluginů a pravidelná praktická cvičení jsou nejlepšími způsoby, jak zlepšit své dovednosti vývoje pluginů. Váš příští plugin možná vyřeší nějaký složitější a zajímavější reálný problém.

Časté dotazy

Kolik souborů musí mít minimálně WordPress plugin?

Pro funkční WordPress plugin je potřeba minimálně jediný PHP soubor. Stačí, aby na začátku tohoto souboru byly správné informace o pluginu (alespoň některé z nich). Plugin NamePoté, co tento soubor nahradí původní soubor ve složce „plugins“, WordPress jej bude schopen identifikovat a aktivovat v seznamu pluginů v pozadí. Tento soubor může obsahovat veškerý kód potřebný k fungování pluginu, včetně kódu pro správné stránky určené k jeho konfiguraci a údržbě. Pro složitější pluginy je však doporučeno rozdělit kód do více souborů a adresářů, aby bylo snazší o údržbu.

Jak zabránit konfliktům mezi pluginy, které jsem vyvinul, a jinými pluginy?

Klíčem k předcházení konfliktům je používání jedinečných předpon při pojmenovávání všech vašich funkcí, tříd, proměnných, názvů možností a akcí/filtrovacích hooků. Například, nepoužívejte… add_greeting() Takové obecné názvy funkcí by měly být nahrazeny názvy, které jsou přesnější a lépe vystihují jejich funkci. mgp_add_greeting() Taková jména (z nichž…) mgp Jedná se o zkratky vašich pluginů. Pro položky uložené v databázi by mělo být také použito jedinečné předponování, např.: mgp_greeting_textTím se maximalizuje možnost snížení konfliktů mezi názvy prostorů (namespaceů).

Co by mělo být provedeno při aktivaci a deaktivaci pluginů?

Při aktivaci pluginu je obvykle nutné provést několik jednorázových úkolů, jako je kontrola verze PHP nebo WordPress, vytvoření databázových tabulek, inicializace výchozích nastavení atd. To lze provést pomocí… register_activation_hook() Funkce může být implementována stejným způsobem.register_deactivation_hook() Slouží k definování akcí, které se provádějí při deaktivaci pluginu, např. k odstranění plánovaných úkolů. Mějte však na paměti, že deaktivace pluginů obvykle není určena k smazávání dat – čištění dat je obvykle ponecháno na odinstalačních procedurách nebo na volbu uživatele.

Jak přidat stránku nastavení pro můj plugin?

Přidávání stránek pro nastavení pluginů zahrnuje především dvě API WordPressu: Menu API a Settings API. Nejprve se použije… add_action( 'admin_menu', ... ) Připojte funkci a použijte ji uvnitř této funkce. add_menu_page()add_submenu_page() Zaregistrujte si stránku s hlavním nebo podřízeným menu. Poté ji použijte. add_action( 'admin_init', ... ) Připojte („mount“) jinou funkci a použijte ji v ní. register_setting()add_settings_section()add_settings_field() Definujte konkrétní možnosti nastavení a pole formuláře. Nakonec napište funkci na zpětnou volání (callback), která bude renderovat HTML formulář stránky pro nastavení.

Která verze WordPress musí být kompatibilní s mým pluginem?

Záleží to na vaší cílové skupině uživatelů. Obvykle se doporučuje kompatibilita s posledními 3 až 4 hlavními verzemi WordPressu. Můžete to uvést v informacích o pluginu. Requires at least: Uveďte minimální verzi WordPressu, která je požadována. Během vývoje se mělo vyhnout používání velmi nových funkcí, které jsou podporovány pouze nejnovějšími verzemi WordPressu, stejně jako používání funkcí, které nejsou kompatibilní s staršími verzemi systému. function_exists() Provádějte podmínkové kontroly, abyste zajistili kompatibilní alternativy pro starší verze. Pravidelné testování na starších verzích WordPressu je také dobrým způsobem, jak zajistit kompatibilitu.