Kompletní průvodce vývojem WordPress pluginů: Od základů až po pokročilé návody na vytváření funkčních doplňků

Čtení za 3 minuty.
2026-03-15
2026-06-04
2,817
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ývoj pluginů pro WordPress je základním způsobem, jak rozšířit funkce jádra WordPressu. Umožňuje vývojářům přidávat na webové stránky jakékoli požadované funkce, aniž by bylo nutné měnit samotný základní kód. Ať už jde o jednoduché šablony (shortcodes) nebo o složité e-shopové systémy, vše lze realizovat pomocí pluginů. Ovládnutí dovedností vývoje pluginů znamená, že můžete WordPress důkladně přizpůsobit podle konkrétních požadavků vašeho podnikání a dokonce proměnit své nápady v produkty, které můžete publikovat.

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

Než začnete psát kód, musíte si vytvořit vhodné vývojové prostředí a pochopit základní strukturu pluginu.

Příprava vývojového prostředí

Efektivní lokální vývojové prostředí je nezbytné. Doporučujeme použít nástroje jako Local by Flywheel, XAMPP nebo MAMP k rychlému vytvoření integrovaného prostředí obsahujícího PHP, MySQL a Apache/Nginx. Ujistěte se, že vaše verze PHP je kompatibilní s požadavky nejnovější verze WordPressu. Kromě toho je nezbytný i vhodný editor kódu (např. VS Code, PhpStorm) a nástroje pro ladění v prohlížeči.

Doporučujeme k přečtení. Ultimátní průvodce vývojem WordPress pluginů: Postavte si svůj první plugin od nuly

Základní struktura pluginu a hlavní soubor

Každý plugin musí mít hlavní soubor, který slouží jako vstupní bod pro daný plugin. Tento hlavní soubor se obvykle jmenuje podle názvu pluginu. Například: my-awesome-plugin.phpV hlavičce souboru musí být obsaženy specifické poznámky s informacemi o pluginu – to je klíčové pro to, aby WordPress plugin rozpoznal.

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.
<?php
/**
 * Plugin Name:       我的超强插件
 * Plugin URI:        https://example.com/my-awesome-plugin
 * Description:       这是一个用于演示的WordPress插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-awesome-plugin
 * Domain Path:       /languages
 */

Tento komentář definuje informace, které se zobrazují o pluginu v administračním rozhraní WordPressu, včetně jeho názvu, popisu, verze a dalších údajů.Text DomainDomain Path Použito pro mezinárodní překlady.

Organizace adresáře plug-inů

Strukturovaný adresář plug-inů usnadňuje jejich dlouhodobou údržbu. Typická struktura adresáře může zahrnovat:
– Hlavní soubor my-awesome-plugin.php (Nachází se v kořenovém adresáři pluginu.)
- includes/ Obsah: Obsahuje soubory s klíčovými funkcemi nebo třídami.
- admin/ Katalog: Obsahuje kód související s administrátorským rozhraním pro správu systému.
- public/ Katalog: Obsahuje kód související s front-end zobrazením.
- assets/ Obsah: Slouží k uložení souborů s CSS styly, JavaScript skriptů a obrázků.
- languages/ Katalog: Slouží k uložení souborů s mezinárodními překlady (.po/.mo).

Klíčové koncepty vývoje a mechanismus Hooků

Klíčovou filozofií vývoje pluginů pro WordPress jsou “hooky” a “callbacky”. Díky hookům může váš kód být začleněn do základního prováděcího procesu WordPressu v určitých časech.

Akční hooky a filtrovací hooky

Hooky nástroje se hlavně dělí na dvě kategorie: akce (Action) a filtry (Filter).
Akční háčky vám umožňují spouštět vlastní kód po nastavení konkrétních událostech, například po zveřejnění článku nebo při načtení správní stránky. add_action() Funkce slouží k montáži.

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

function myplugin_send_notification( $post_id ) {
    // 当文章发布时,执行发送通知的代码
    wp_mail( '[email protected]', '新文章发布', "文章ID: $post_id 已发布。" );
}
add_action( 'publish_post', 'myplugin_send_notification' );

Filtrovací hooky vám umožňují upravovat data. Můžete je změnit ještě před tím, než jsou použita (např. při ukládání do databáze nebo výstupu do prohlížeče). add_filter() Funkce.

function myplugin_modify_title( $title ) {
    // 在所有文章标题前添加文本
    return '【精选】' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' );

Vytvoření vlastního hooku

Vynikající pluginy nejen využívají základní „hooky“ (speciální mechanismy pro komunikaci mezi komponentami), ale měly by také poskytovat dalším vývojářům možnost vytvářet vlastní „hooky“. do_action() Vytvořte akční hook a použijte ho… apply_filters() Vytvořte filtrový hook.

// 在插件代码的某个位置定义一个动作钩子
do_action( 'myplugin_after_processing', $data );

// 定义一个过滤器钩子,允许其他代码修改 $output
$output = apply_filters( 'myplugin_output_filter', $default_output, $param1, $param2 );

Vytvoření funkce pro pluginy: možnosti, zkratky kódu a interakce s databází

Kompletní plugin obvykle musí poskytovat možnosti konfigurace, způsob zobrazení na straně klienta a funkce pro ukládání dat.

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řit stránku s možnostmi správy

Použijte API nastavení (Settings API) WordPress k vytvoření bezpečných a standardizovaných správních stránek. To zahrnuje registraci nastavení, přidávání polí a kapitol nastavení.

add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',       // 权限
        'myplugin-settings',    // 菜单slug
        'myplugin_settings_page' // 回调函数,用于输出页面HTML
    );
}

// 注册设置、字段和章节的代码...
function myplugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Nastavení mého pluginu</h1>
        <form action="/cs/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'myplugin_settings_group' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="cs"/></form>
    </div>
    <br />&lt;?php
}

Implementace funkce zkrácených kódů

Shortcodes umožňují uživatelům snadno vkládat funkce pluginů do článků nebo stránek. add_shortcode() Funkce je registrována.

add_shortcode( 'myplugin_show_message', 'myplugin_shortcode_callback' );
function myplugin_shortcode_callback( $atts ) {
    // 解析短代码属性
    $attributes = shortcode_atts( array(
        'text' =&gt; '默认消息',
    ), $atts );

// 返回要显示的内容
    return '<div class="myplugin-message">'`. esc_html($attributes['text'])`.'</div>';
}

Uživatelé mohou v editoru zadávat text. [myplugin_show_message text="你好,世界!"] Použijte ho.

Doporučujeme k přečtení. Ultimátní průvodce vývojem WordPress pluginů: Cesta od základů k odbornému použití

Interakce s databází

Pro pluginy, které potřebují ukládat data, se doporučuje používat třídy pro práci s databází poskytované WordPressem. $wpdbPři vytváření vlastní tabulky je nutné to provést v hooku aktivace pluginu.

register_activation_hook( __FILE__, 'myplugin_create_table' );
function myplugin_create_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'myplugin_data'; // 加上前缀
    $charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        name varchar(100) NOT NULL,
        value text,
        created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
        PRIMARY KEY (id)
    ) $charset_collate;";

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}

Při vyhledávání dat by mělo být použito… $wpdb->prepare() Je to pro prevenci útoků typu SQL injection.

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.

Bezpečnost pluginů, jejich výkon a příprava k vydání

Pluginy, které byly dokončeny vývojem, musí projít bezpečnostními úpravami, optimalizací výkonu a standardizací, než je lze zpřístupnit uživatelům k použití.

Nejlepší postupy pro bezpečnost

Bezpečnost je nejdůležitějším aspektem. Všechny informace pocházející z uživatelského vstupu (např. $_GET$_POST$_COOKIEVšechna data získaná musí být ověřena, očištěna a předvedena („escaped“).
– Validace: Kontrola toho, zda data odpovídají očekávanému formátu (např. zda je jedná o e-mailovou adresu nebo číslo).
– Sanitizace: Očištění dat od nebezpečných znaků. K tomu se používají funkce, jako např.… sanitize_text_field()sanitize_email()
– Escaping: Před výstupem dat do HTML, JavaScriptu nebo URL je třeba je vyhnout speciálním znakům („escape“). K tomu slouží funkce jako… esc_html()esc_js()esc_url()

Zároveň se používá vestavěný „nonce“ systém WordPressu.wp_nonceTento mechanismus slouží k ověření platnosti požadavků a zabránění útokům typu Cross-Site Request Forgery (CSRF).

Tipy pro optimalizaci výkonu

Vyhněte se provádění zbytečných databázových dotazů nebo náročných operací v pluginech. Pro výsledky opakovaných dotazů zvažte použití API „Transients“ v WordPressu k jejich ukládání do mezipaměti.

// 尝试从缓存中获取数据
$data = get_transient( 'myplugin_expensive_data' );
if ( false === $data ) {
    // 缓存中没有,执行耗时操作获取数据
    $data = myplugin_expensive_query_function();
    // 将数据缓存12小时
    set_transient( 'myplugin_expensive_data', $data, 12 * HOUR_IN_SECONDS );
}

Ujistěte se, že při deaktivaci nebo odinstalaci pluginu jsou všechny potřebné kroky provedeny správně. register_deactivation_hookregister_uninstall_hook Uklidněte dočasné objekty, plánované úlohy (Cron Jobs) a vlastní databázové tabulky, které jste vytvořili (volitelné).

Internationalizace a finální vydání

Použití ()_e() Funkce jako `wrap_text` obalují veškerý text viditelný pro uživatele, aby byla podpora více jazyků možná. Například:echo esc_html( ‘Hello World’, ‘my-awesome-plugin’ );Poté použijte nástroj, jako je Poedit, k vytvoření požadovaného obsahu. .pot Šablony a překladatelské soubory.

Před zveřejněním se ujistěte, že váš kód splňuje standardy kódování WordPressu, a napište také jasný a přehledný popis toho, co dělá. readme.txt Nakonec sbalte plugin do souboru typu ZIP a můžete jej nahrát do oficiálního adresáře pluginů WordPress nebo jej distribuovat jinými způsoby.

Závěr

Vývoj pluginů pro WordPress je proces, při kterém se nápady proměňují v reálné produkty. Od pochopení základních mechanismů hooků, přes vytváření uživatelských rozhraní a použití shortcodeů, až po zásadní optimalizace z hlediska bezpečnosti a výkonu, je nutné každý krok pečlivě zvážit. Dodržování osvědčených postupů a psaní strukturovaného, bezpečného a spolehlivého kódu umožňuje nejen vytvořit funkční pluginy, ale také zajistit jejich udržovatelnost a kompatibilitu. Neustálé studium základních API WordPressu a standardů komunity je klíčem k tomu, stát se skvělým vývojářem pluginů.

Časté dotazy

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

Potřebujete mít základní znalosti programovacího jazyka PHP, protože WordPress a jeho pluginy jsou převážně napsány v PHP. Stejně tak je důležité mít základní povědomí o HTML, CSS a JavaScriptu, které se používají pro zpracování vzhledu a interakcí na straně uživatele. Znalost základních konceptů databáze MySQL (např. přidávání, mazání, úprava a vyhledávání dat) by také byla užitečná, avšak pro práci s WordPressem… $wpdb Takové třídy zjednodušují většinu operací.

Jak ladit můj WordPress plugin?

Nejprve se ujistěte, že… wp-config.php Aktivováno v souboru. WP_DEBUGWP_DEBUG_LOG Konstanta – to umožní zaznamenat chybové zprávy do… /wp-content/debug.log Ve souboru. Dále lze použít… error_log() Funkce vypisuje vlastní laděcí informace. K ladění AJAX požadavků a chyb v JavaScriptu lze také využít panely „Network“ a „Console“ v nástrojích pro vývojáře webových stránek. Profesionální integrované vývojové prostředí (IDE), jako je např. PhpStorm, poskytují také výkonné funkce pro ladění pomocí přerušení kódu („breakpoints“).

Má můj plugin vytvářet vlastní databázové tabulky?

Záleží to na požadavcích. Pokud vaše data mají velmi vlastní strukturu a nelze je účinně uložit pomocí vestavěných typů článků v WordPressu (Custom Post Type) nebo API pro nastavení možností (Options API), pak je důvodné vytvořit vlastní tabulky. To platí například v případech, kdy potřebujete uložit složitá logovací záznamy nebo relační data. Pokud se však data dají přirozeně přiřadit k “článkům” spolu s vlastními metadaty, je obvykle lepší volbou použít vlastní typy článků, protože to umožňuje automatickou kompatibilitu s celým ekosystémem WordPressu (např. při vyhledávání, správě oprávnění atd.).

Jak zajistit, aby můj plugin byl kompatibilní s více verzemi WordPressu?

Vyhněte se používání příliš nových nebo zastaralých funkcí. Při vývoji se podívejte na oficiální WordPress Codex nebo Developer Handbook a věnujte pozornost verzím, ve kterých byly funkce zavedeny, stejně jako verzím, ve kterých byly zastaralé. V kódu můžete použít podmínkové příkazy nebo jiné metody k určení vhodné verze funkce. function_exists() Poskytněte plán pro případ nouze („back-up“ řešení). Například:if ( function_exists( ‘wp_is_block_theme’ ) ) { ... }Zároveň je v hlavičkových poznámkách hlavního souboru pluginu jasně uveden rozsah verzí WordPressu, pro které byly testy provedeny a které byly považovány za úspěšné.