Od nuly: Vytvořte si svůj první WordPress plugin

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

Od nuly: Vytvořte si svůj první WordPress plugin

Vývoj pluginů pro WordPress je základním způsobem, jak rozšířit funkce jádra WordPressu. Vytvářením pluginů mohou vývojáři přidávat webovým stránkám vlastní funkce, aniž by bylo nutné měnit tematické šablony nebo základní soubory WordPressu, což zajišťuje nezávislost a přenositelnost těchto funkcí. Standardní plugin se obvykle skládá z hlavního PHP souboru, volitelných zdrojových souborů (jako je CSS, JavaScript) a jazykových balíčků. Porozumění základní struktuře pluginů je prvním krokem k úspěšnému vývoji.

Základní struktura a vytváření WordPress pluginů

Nejzákladnější formou pluginu je něco, co se umístí…/wp-content/plugins/Složka v adresáři. Tato složka musí obsahovat alespoň jednu hlavní PHP soubor, jejíž záhlaví obsahuje poznámky určené k deklaraci informací o pluginu pro WordPress.

Psaní poznámek do hlavičky pluginu

Hlavní soubor každého pluginu musí začínat určitým blokem PHP komentářů, který se nazývá „plugin header“. WordPress na základě těchto informací rozpozná a zobrazí váš plugin v seznamu pluginů v administraci. Standardní příklad komentáře pro plugin header je následující:

Doporučujeme k přečtení. Podrobný přehled vývoje WordPress pluginů: Od začátků až po efektivní personalizaci

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

Mezi nimi,Plugin NameJe to nutné; ostatní pole jsou volitelná. Pro úplnost a profesionalitu pluginu však doporučujeme vyplnit všechna pole, pokud je to možné.Text DomainSlouží k internacionalizaci a je základem pro překlad následných doplňků.

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 hlavní soubor a adresář pro plugin.

Nejprve,/wp-content/plugins/Vytvořte novou složku v adresáři, napříkladmy-first-pluginPoté v této složce vytvořte hlavní PHP soubor, který obvykle nese stejné jméno jako složka.my-first-plugin.phpZadejte výše uvedené poznámky do tohoto souboru, uložte ho a poté ho uvidíte a můžete ho aktivovat na stránce “Příslušenství” v administraci WordPress. V tuto chvíli však ještě nemá žádné funkce.

Klíčové koncepty vývoje: Akční háčky a filtry

Architektura pluginů v WordPressu je založena na systému “hooků”, který slouží jako most mezi pluginy a jádrem systému. Hooky se dělí především na dvě kategorie: akční hooky (action hooks) a filtrovací hooky (filter hooks).

Porozumění a použití akčních háčků (action hooks)

Akční háčky vám umožňují spouštět vlastní PHP kód v určitých časech nebo při nastání konkrétních událostí. Můžete je použít k automatizaci různých procesů nebo k provedení jednotlivých úkolů v rámci vašeho webu.add_action()Funkce “namontuje” vaši funkci na určitý „háček“ (hook). Například může automaticky přidávat text na konci obsahu článku.

function myplugin_add_footer_text( $content ) {
    if ( is_single() ) {
        $content .= '<p>Děkujeme, že jste si to přečetli!</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_footer_text' );

Všimněte si, že tento příklad ve skutečnosti používá „filter hooky“ k úpravě obsahu. Typickým příkladem „action hooku“ je přidávání menu v administračním rozhraní:

Doporučujeme k přečtení. Naučte se vývoj WordPress pluginů od základů: Vytvořte si svou první vlastní funkci

function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',
        '我的插件',
        'manage_options',
        'myplugin-settings',
        'myplugin_settings_page'
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

Zde,add_action()„Převést funkci“myplugin_add_admin_menuPřipojit kadmin_menuTento akční hook bude volán WordPress při vytváření backend menu.

Porozumění a použití filtrovacích hooků

Filtrovací hooky slouží k úpravě dat, která vznikají během zpracování v WordPressu. Můžete je použít k provedení různých úkolů, např. k přidání nových informací, úpravě stávajících dat nebo k jejich filtrování.add_filter()Funkce slouží k načtení vaší funkce a jejímu následnému spuštění. Filtrační funkce přijímá vstupní hodnotu, tyto hodnoty upraví a poté musí vrátit upravené hodnoty. Například: úprava nadpisu článku.

function myplugin_modify_title( $title ) {
    return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' );

Filtry jsou velmi výkonné a často se používají k úpravě výsledků dotazů, textového obsahu, hodnot možností a téměř všech dat generovaných WordPressem.

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.

Přidejte pro plugin stránku nastavení a možnosti.

Plug-in s kompletní funkcionalitou obvykle musí poskytovat uživatelům možnosti konfigurace. WordPress nabízí API pro nastavení, který umožňuje vytvářet stránky s konfiguračními možnostmi způsobem bezpečným a standardizovaným.

Vytvoření správního menu a stránek

Nejprve potřebujete použít…add_menu_page()add_options_page()Použijte funkce typu „add“ nebo „create“ k vytvoření správné stránky. Obvykle tento proces připojíme („mount“) k existujícímu systému nebo aplikaci.admin_menuNa háčku, jak je ukázáno v předchozím příkladu. Zde…myplugin_settings_pageJedná se o callback funkci určenou k renderování HTML obsahu stránky pro nastavení.

Přihlaste možnosti pomocí API Settings.

API pro nastavení poskytuje bezpečný způsob registrace, ověření a ukládání nastavení. Klíčové kroky zahrnují:register_setting()Zaregistrujte skupinu nastavení a použijte ji.add_settings_section()Přidejte blok nastavení a také možnost jeho použití.add_settings_field()Přidejte konkrétní pole nastavení.

Doporučujeme k přečtení. Kompletní průvodce vývojem WordPress pluginů: Od základů po pokročilé praktické návody

function myplugin_settings_init() {
    // 注册一个设置
    register_setting( 'myplugin_settings', 'myplugin_options' );

    // 添加一个设置区块
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_cb',
        'myplugin-settings'
    );

    // 添加一个设置字段
    add_settings_field(
        'myplugin_field_text',
        '欢迎语',
        'myplugin_field_text_cb',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

Poté potřebujete napsat odpovídající funkci na zpětné volání (callback function).myplugin_section_general_cbmyplugin_field_text_cbVytvořte HTML kód pro blokový popis a pole pro vstup dat. Na konci přidejte potřebné elementy.myplugin_settings_pageVe funkci se to používá.settings_fields()do_settings_sections()Funkce slouží k výstupu celého formuláře.

Bezpečnost pluginů a osvědčené postupy

Při vývoji doplňků je bezpečnost hlavním faktorem, který je třeba zvážit. Nebezpečný doplněk může ohrozit celý web.

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.

Data validation, cleaning, and escaping

Nikdy nesmíte důvěřovat datům, která zadají uživatelé, ani datům pocházejícím z databáze. Při zpracování jakéhokoli vstupu (např. $_POST, $_GET) je nutné provést jejich ověření a čištění. WordPress nabízí mnoho funkcí k tomuto účelu.sanitize_text_field(), intval(), wp_kses()Atd. Při výstupu dat do HTML nebo JavaScript je nutné provést jejich escapeování pomocí funkcí, jako např.esc_html(), esc_attr(), esc_js()wp_json_encode()

// 接收、清理并保存数据
$user_input = sanitize_text_field( $_POST['my_field'] );
update_option( 'my_option', $user_input );

// 安全地输出数据
echo esc_html( get_option( 'my_option' ) );

Použití ne-CE a kontrola oprávnění

Pro všechny požadavky na odeslání formulářů do backendu nebo AJAX požadavků ze strany pluginů je nutné použít WordPressové „nonce“ k ověření legitimity a jedinečnosti těchto požadavků, aby bylo možné zabránit útokům typu cross-site request forgery. Zároveň je třeba…current_user_can()Funkce zkontroluje, zda má aktuální uživatel oprávnění potřebná k provedení této operace.

// 在表单中输出 nonce 字段
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );

// 在处理请求时验证 nonce 和权限
function myplugin_handle_form_submit() {
    if ( ! isset( $_POST['myplugin_nonce'] ) ||
         ! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ||
         ! current_user_can( 'manage_options' ) ) {
        wp_die( '安全校验失败。' );
    }
    // ... 安全地处理数据 ...
}

Závěr

Vývoj pluginů pro WordPress je systématický proces, který začíná pochopením základní struktury a mechanismů hooků, pokračuje implementací funkcí a vytvářením uživatelského rozhraní a musí být provázen přísnými bezpečnostními zásadami. Dodržováním kódovacích standardů WordPress a plným využitím poskytované API mohou vývojáři vytvořit robustní, bezpečné a snadno udržovatelné pluginy. Klíčovým aspektem je bezproblémová integrace vlastních funkcí do životního cyklu WordPress pomocí hooků typu „akce“ (actions) a „filtrů“ (filters), přičemž se pro správu konfigurace využívá API Settings. Vždy je třeba upřednostňovat ověřování dat, jejich čištění, escapeování a kontrolu oprávnění.

Časté dotazy

###: Jak ladit můj WordPress plugin?
Prvním krokem je zapnutí režimu ladění (debugging mode) v WordPressu.wp-config.phpV dokumentu budou uvedeny následující informace:WP_DEBUGKonstanta je nastavena natrueTo bude zobrazovat chyby, varování a upozornění PHP přímo na stránce. Pro složitější ladění lze použít…error_log()Funkce zaznamenává informace do chybového logu serveru, nebo lze použít speciální ladící nástroje k zobrazení detailních údajů o dotazech, háčcích (hooks) a dalších funkcích.

Jak můj plugin podporovat více jazyků?

WordPress využívá framework GNU gettext pro zajištění internacionalizace. Nejprve je nutné definovat potřebné parametry v poznámkách na začátku souboru pluginu.Text DomainV kódu pluginu použijte pro všechny řetězce, které je třeba přeložit, následující způsob:__()Provedení překladu…_e()Přeložte text a poté pomocí nástroje jako Poedit extrahujte řetězce z zdrojového kódu pluginu..potŠablony souborů – pro každý jazyk poté vytvořte odpovídající verze těchto šablon..poA po kompilaci.moSoubor a umístěte jej do pluginu./languages/V adresáři.

Jak se může zabránit konfliktům mezi názvy tříd v různých pluginech?

Aby se předešlo konfliktům mezi názvy tříd, funkcí nebo konstant, je osvědčenou praxí používat jmenné prostory (namespacey) nebo přidávat jedinečné předpony ke všem identifikátorům. Od verze PHP 5.3 se doporučuje používání jmenných prostor. Například:namespace MyPluginAdmin;Pokud je nutné zohlednit kompatibilitu, je třeba použít předponu, která by měla být dostatečně jedinečná. Například lze kombinovat zkratky názvu společnosti a názvu pluginu:function acme_myplugin_init() {}Název třídy je definován jako…class Acme_MyPlugin_Admin_Settings {}

Jak přidat do svého pluginu vlastní databázovou tabulku?

Nejlepší čas na vytvoření vlastní tabulky je při aktivaci pluginu. Kód pro vytvoření tabulky můžete zabalit do funkce a poté jej použít při potřebě.register_activation_hook()Funkce slouží k registraci. Uvnitř této funkce se používá…dbDelta()Funkce slouží k bezpečnému vytvoření nebo aktualizaci struktury tabulky a vyžaduje použití velmi konkrétního formátu SQL. Nezapomeňte tuto funkci vždy používat.$wpdb->prefixPřidejte předponu „site“ k názvům tabulek, abyste podpořili prostředí s více webovými stránkami.