Podrobný přehled vývoje WordPress pluginů: Od začátků až po efektivní personalizaci

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

Základní struktura a princip fungování WordPress pluginů

Pro vývoj WordPress pluginu je nejprve nutné pochopit jeho základní strukturu a způsob fungování během životního cyklu WordPressu. Plugin je v podstatě jedna nebo více PHP souborů, které využívají rozsáhlé API (Application Programming Interface) poskytované WordPressem k rozšíření nebo úpravě funkcí webové stránky.

Základem jakéhokoli pluginu jsou informace umístěné v jeho „hlavě“ (plugin header), které se nacházejí na začátku hlavního souboru pluginu. Tyto informace jsou napsány v specifickém formátu PHP komentářů a slouží k informování systému WordPress o názvu pluginu, popisu, verzi, autorovi a dalších metadatech. Například, plugin s názvem… my-first-plugin.php Soubor může začínat následujícími informacemi:

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

WordPress interaguje s příslušenstvími (plugins) pomocí mechanismu zvaného “hooky”. Hooky existují ve dvou typech: akce (Actions) a filtry (Filters). Hooky typu akce vám umožňují vložit svůj vlastní kód v určitéch okamžicích během provádění WordPressu – například po zveřejnění článku nebo při načítání stylů na stránce. Hooky typu filtrů vám naopak umožňují upravovat data, která vznikají během provádění WordPressu – například obsah článku nebo délku jeho příspěvku. Porozumění a efektivní využití hooků je klíčové pro efektivní vývoj příslušenství.

Doporučujeme k přečtení. Přehledně a srozumitelně: Kompletní průvodce vývojem WordPress pluginů od základů

Porozumění organizaci souborů pluginů

Jednoduchý plugin může mít pouze jediný hlavní soubor. S rostoucím počtem funkcí však je důležitá vhodná struktura organizace souborů. Obvykle obsahuje adresář plně funkčního pluginu hlavní soubor tohoto pluginu (např. my-plugin.phpSlouží k obsažení funkcí a tříd. includes Souborová složka určená k ukládání zdrojových kódů pro front-end stránky. assets Složka (obsahující CSS, JavaScript, obrázky), určená pro soubory určené k překladu languages Soubory složek a také ty používané pro šablony uživatelského rozhraní. templates Souborová složka. Tato modulární struktura usnadňuje údržbu kódu a spolupráci týmu.

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í jednoduchý plugin.

Začněme praktickým příkladem. Vytvoříme plugin, který automaticky přidá na konci všech článků a obsahu stránek na webu vlastní prohlášení o autorských právech.

Nejprve musíte najít adresář s instalací WordPress ve vašem počítači. wp-content/plugins V této složce vytvořte novou složku s názvem my-copyright-noticePoté v této složce vytvořte hlavní PHP soubor, například s názvem my-copyright-notice.php

Funkce pro přidávání implementačních obsahů

Použijeme filtrační háčky. the_content Pro implementaci této funkce otevřete hlavní soubor, nejprve přidejte informace o hlavičce pluginu a poté napište jádro funkce.

&lt;?php
/**
 * Plugin Name: 自动版权声明
 * Description: 在文章和页面内容末尾自动添加版权信息。
 * Version:     1.0
 * Author:      WordPress 学习者
 */

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

/**
 * 在内容末尾添加版权声明的函数
 *
 * @param string $content 原始的文章内容。
 * @return string 添加了版权声明后的内容。
 */
function mycn_add_copyright_to_content( $content ) {
    // 仅对主循环内的文章和页面生效
    if ( is_single() || is_page() ) {
        $copyright_text = &#039;<p><em>© Autorská práva: Tento text je vlastnictvím tohoto webu a bez svolení nesmí být reprodukován.</em></p>';
        $content .= $copyright_text;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器上
add_filter( 'the_content', 'mycn_add_copyright_to_content' );

Po uložení souboru se přihlaste do svého WordPress administrátorského panelu a přejděte na stránku “Příslušenství” (Plugins). Měli byste tam vidět plugin “Automatic Copyright Statement”. Po jeho aktivaci se při zobrazení jakéhokoli článku nebo stránky objeví dole text autorských práv, který jste si sami definovali. Tento příklad je sice jednoduchý, ale kompletně ukazuje celý proces vytváření, kódování a aktivace pluginu.

Doporučujeme k přečtení. Naučte se vyvíjet pluginy pro WordPress od nuly: principy, praktické příklady a pokročilé techniky.

Interakce s databází pomocí API WordPress

Pokročilé pluginy obvykle vyžadují ukládání a vyhledávání dat. WordPress poskytuje velmi pohodlné třídy pro práci s databází. wpdb Spolu s možnostmi API můžete bezpečně pracovat s databází, aniž byste museli přímo psát SQL příkazy.

Pro jednoduchá data ve formátu klíč-hodnota, např. konfigurační nastavení pluginů, se vřele doporučuje používat API pro volby (option API). Můžete jej využít k… add_option(), get_option(), update_option()delete_option() Pro správu dat se používají různé funkce. Tyto funkce automaticky zpracovávají serializaci dat a jejich ukládání do… wp_options V tabulce.

Vytvoření vlastní databázové tabulky

Když je potřeba uložit strukturovaná, složitá data (např. objednávky, záznamy o odeslání formulářů), může být nutné vytvořit vlastní databázové tabulky. To se obvykle provádí při aktivaci pluginu. K tomu je potřeba napsat funkci a registrovat ji… register_activation_hook Na tomto speciálním háčku.

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.

Ve vašem hlavním souboru pluginu můžete obsahovat kód podobný tomu níže:

/**
 * 插件激活时创建自定义数据库表
 */
function myplugin_create_custom_table() {
    global $wpdb;

$table_name = $wpdb->prefix . 'myplugin_data'; // 获取带前缀的表名,如 wp_myplugin_data
    $charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        user_id int NOT NULL,
        data_value text NOT NULL,
        created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";

// 引入 WordPress 升级所需的文件
    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}
// 注册激活钩子
register_activation_hook( __FILE__, 'myplugin_create_custom_table' );

dbDelta() Funkce jsou v WordPressu velmi účinnými nástroji pro vytváření nebo aktualizaci databázových tabulek. Porovnávají stávající strukturu tabulek s vašimi SQL příkazy a provádějí pouze potřebné změny. Všimněte si…dbDelta() Jsem velmi citlivý na formát SQL příkazů, zejména na definice klíčů a na použití odsazení.

Vytvoření rozhraní pro správu pluginů a zavedení bezpečnostních postupů

Profesionální plugin obvykle vyžaduje stránku pro konfiguraci v administraci, která umožňuje uživatelům měnit nastavení. Můžete využít “API pro nastavení” (Settings API) WordPressu k vytvoření této stránky způsobem, který je standardizovaný a bezpečný. Toto API zajišťuje ověřování formulářů, zabezpečené pole (např. nonce) a ukládání nastavení, což výrazně zjednodušuje proces vývoje.

Doporučujeme k přečtení. Přizpůsobené WordPress téma: Kompletní návod, jak vytvořit jedinečný vzhled webové stránky od nuly.

Stránka pro nastavení doplňků

Nejprve potřebujete použít… add_action() Funkce načte („mount“) něco na… admin_menu Kontrolní funkce akčního háčku slouží k přidání položky menu a stránky. Poté, ve kontrolní funkci této stránky, se použije funkce pro nastavení API k vytvoření formuláře.

Níže je zjednodušený příklad, který ukazuje, jak přidat stránku s hlavním menu a registrovat pole pro 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.
/**
 * 添加插件设置菜单
 */
function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',               // 菜单标题
        'manage_options',         // 所需权限
        'myplugin-settings',      // 菜单 slug
        'myplugin_settings_page', // 显示设置页面的回调函数
        'dashicons-admin-generic', // 图标
        80                        // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

/**
 * 初始化插件设置
 */
function myplugin_settings_init() {
    // 注册一个新的设置到 “myplugin_settings” 页面
    register_setting( ‘myplugin_settings’, ‘myplugin_options’ );

// 在页面中添加一个区域
    add_settings_section(
        ‘myplugin_section’,
        ‘主要设置’,
        null, // 可选的区域描述回调函数
        ‘myplugin_settings’
    );

// 向区域中添加一个字段
    add_settings_field(
        ‘api_key’,
        ‘API 密钥’,
        ‘myplugin_api_key_field_callback’, // 渲染字段 HTML 的回调函数
        ‘myplugin_settings’,
        ‘myplugin_section’
    );
}
add_action( ‘admin_init’, ‘myplugin_settings_init’ );

/**
 * 渲染 API 密钥字段
 */
function myplugin_api_key_field_callback() {
    $options = get_option( ‘myplugin_options’ );
    ?&gt;
    <input type="‘text’" name="‘myplugin_options[api_key]’" value="‘NO NUMERIC NOISE KEY" 1003’>
    <?php
}

/**
 * 设置页面的显示内容
 */
function myplugin_settings_page() {
    ?>
    <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_settings’ ); // 输出安全字段
            do_settings_sections( ‘myplugin_settings’ ); // 输出设置区域和字段
            submit_button( ‘保存设置’ );
            ?>
        <input type="hidden" name="trp-form-language" value="cs"/></form>
    </div>
    <br />&lt;?php
}

Dodržovat bezpečnostní normy WordPress

Bezpečnost je při vývoji pluginů nejdůležitějším aspektem. Je nutné zpracovat veškerý uživatelský vstup a výstup. WordPress poskytuje řadu funkcí, které vám s tím pomohou:
* 转义输出:使用 esc_html(), esc_attr(), esc_url()wp_kses_post() Funkce jako „wait“ zajišťují, že data zobrazená na stránce jsou bezpečná.
* 验证和清理输入:在处理表单提交的数据前,使用 sanitize_text_field(), intval(), sanitize_email() Použijte funkce k úklidu.
* Nonce 验证:对于所有涉及状态更改的操作(如表单提交、AJAX 请求),使用 wp_nonce_field(), wp_create_nonce()wp_verify_nonce() Je to určeno k zabránění útokům typu Cross-Site Request Forgery (CSRF).
* 能力检查:使用 current_user_can() Funkce slouží k ověření, zda má aktuální uživatel oprávnění provést určitou operaci. ‘edit_posts’, ‘manage_options’)。

Závěr

Vývoj pluginů pro WordPress je systématický proces, který začíná pochopením základní struktury (hooky, hlavičkové informace) a postupně pokračuje směrem k implementaci funkcí, správě dat, vytváření uživatelského rozhraní a zvýšení bezpečnosti. Začínající vývojáři mohou rychle získat přehled o pracovním postupu při vytváření pluginů pomocí jednoduchých příkladů, jako je např. plugin určený k zobrazení autorských údajů. Následně se mohou naučit používat API pro nastavení parametrů pluginů (option API) a další nástroje potřebné k efektivnímu vývoji. wpdb Pro práci s daty v rámci dané třídy je nutné provést určité kroky, které jsou nezbytné pro ukládání složitých informací. Nakonec je klíčem k tomu, aby byl plugin profesionální, spolehlivý a široce používaný, vytvoření přívětivého backendu pomocí nastavených API a striktné dodržování bezpečnostních pravidel kódování WordPress. Nejlepším způsobem, jak zlepšit své vývojářské dovednosti, je pravidelná praxe, čtení zdrojového kódu jádra WordPressu a dalších vynikajících pluginů.

Časté dotazy

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

Funkčně kompletní WordPress plugin může obsahovat pouze jeden samostatný PHP soubor. Stačí, aby tento soubor obsahoval správné hlavičkové poznámky (header comments) a umožňoval plnění požadovaných funkcí – WordPress ho poté identifikuje a aktivuje. U složitějších pluginů se z důvodu lepší údržby doporučuje rozdělit jej na více souborů a adresářů.

Jak zajistit, aby plugin podporoval vícejazyčné překlady?

WordPress využívá technologii GNU gettext k implementaci internacionalizace (i18n). Musíte provést následující kroky: Nejprve, v hlavičce pluginu a u všech textových stránek, které je třeba přeložit, použijte nástroje typu… __(‘文本’, ‘your-text-domain’)_e(‘文本’, ‘your-text-domain’) Takovou funkci je třeba zabalit do vhodného obalu („wrapper“). Poté pomocí nástrojů jako Poedit vytvoříte šablonový soubor typu .pot a následně soubory .po a .mo pro příslušný jazyk. zh_CN.poNakonec, prostřednictvím… load_plugin_textdomain() Funkce načte soubory s překlady při inicializaci pluginu.

Jak by měly být správně načteny soubory JavaScript a CSS obsažené v pluginu?

Pro zajištění kompatibility a vyhnutí se konfliktům by se neměly soubory s resursem přímo odkazovat v HTML. Pro zdrojové soubory (front-end resource) by mělo být použito vhodné způsob odkazování. wp_enqueue_script()wp_enqueue_style() Funkce a jejich připojení k wp_enqueue_scripts Na akčních hookech. Pro zdroje stránek určených pro administrátory v pozadí je nutné je připojit (mountovat). admin_enqueue_scripts Na háčcích. Tyto funkce vám umožňují určit závislosti a verze a zajišťují, že stejné zdroje budou načteny pouze jednou.

Jak provádět ladění při vývoji doplňků (pluginů)?

WordPress poskytuje velmi silné nástroje pro ladění. Za prvé, na webových stránkách… wp-config.php V dokumentu budou uvedeny následující informace: WP_DEBUG Konstanta je nastavena na trueTo bude přímo zobrazovat PHP chyby, varování a upozornění na stránce. Můžete to také aktivovat zároveň. WP_DEBUG_LOG(Zaznamenat chyby do…) wp-content/debug.log soubory) a WP_DEBUG_DISPLAY(Ovládá zobrazení na stránce.) Kromě toho se používá… error_log() Použití funkcí nebo zápisu logů do vlastních souborů je také efektivním způsobem sledování proměnných a postupů.