Ovládněte vývoj pluginů pro WordPress: Postavte si svůj první vlastní plugin od nuly

Čtení za 3 minuty.
2026-03-14
2026-06-03
2,828
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ě, svou vysokou rozšiřitelnost především díky pluginům. Vývojem vlastních pluginů můžete do základní platformy přidat jedinečné funkce, které splňují konkrétní obchodní požadavky, aniž byste museli měnit soubory temat (theme files). Toto zajišťuje, že váš kód funkcí nezanikne při aktualizaci temat a zároveň umožňuje modularitu funkcí, což usnadňuje jejich opakované použití na různých webových stránkách.

Učení se vývoje pluginů vám nejen umožní vytvářet produkty, které mohou ostatní používat, ale také vám poskytne hlubší pochopení fungování WordPressu – včetně jeho systému hooků, interakcí s databází a osvědčených postupů z hlediska bezpečnosti. Jedná se o klíčový krok na cestě od běžného uživatele k pokročilému vývojáři.

Vytvořte svůj první plugin.

Než začnete psát kód, musíte si na svém lokálním počítači nebo na testovacím serveru nastavit standardní prostředí WordPress. To je základem pro veškerou vývojovou práci.

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

Vytvoření hlavního souboru pluginu

Každý plugin pro WordPress musí mít hlavní soubor, který je obvykle nazýván stejně jako název samotného pluginu. Vytvoříme jeden takový soubor s názvem…my-first-pluginPlugin. Nejprve, ve složce s vaším instalací WordPressu…/wp-content/plugins/V té složce vytvořte novou složku a pojmenujte ji…my-first-plugin

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.

V této složce vytvořte soubor s názvemmy-first-plugin.phpPHP soubor. Tento soubor je vstupním bodem pro váš plugin. Otevřete ho a přidejte následující poznámky na začátek souboru týkající se pluginu – tyto informace jsou klíčové pro to, aby WordPress rozpoznal váš plugin.

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个学习WordPress插件开发的示例插件,用于在文章底部添加自定义内容。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Implementace první jednoduché funkce

Klasickou funkcí určenou pro začátečníky je možnost automatického přidávání textového bloku na konec všech článků na webových stránkách. Pro tento účel použijeme nástroje dostupné v systému WordPress. the_content To lze realizovat pomocí filtrovacích hooků. Pod poznámkami na začátku vašeho hlavního souboru přidejte následující funkci:

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

/**
 * 在文章内容末尾添加自定义文本
 *
 * @param string $content 原始的文章内容。
 * @return string 修改后的文章内容。
 */
function mfp_add_footer_text( $content ) {
    // 判断是否是主循环且在单篇文章页面
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = '<div class="mfp-footer-note"><p><em>Děkujeme, že jste si to přečetli! Tento článek vám přináší “Můj první plugin”.</em></p></div>';
        return $content . $custom_text;
    }
    return $content;
}
// 将函数挂载到 `the_content` 过滤器上
add_filter( 'the_content', 'mfp_add_footer_text' );

Tento kód definuje funkci. mfp_add_footer_textPřijímá obsah článku. $content Jako parametr. Uvnitř funkce se nejprve zkontroluje, zda se aktuální prostředí nachází na stránce jednotlivého článku, v hlavním cyklu nebo při provádění hlavního dotazu. To je nutné, aby se zabránilo přidávání textu také do abstraktů, doplňkových funkcí („widgetů“) nebo jiných částí stránky. Pokud jsou podmínky splněny, funkce vytvoří segment vlastního HTML kódu a přidá ho za původní obsah.

Prohloubené poznatky o architektuře a bezpečnosti pluginů

S rostoucím počtem funkcí pluginů je správná organizace kódu zásadní. Zároveň je bezpečnost životně důležitá pro veškerý vývoj v rámci systému WordPress.

Doporučujeme k přečtení. Ovládnutí vývoje pluginů pro WordPress: Postavte si svůj první rozšiřující modul od nuly

Přepracujte kód pomocí objektově orientovaného programování.

Pro zlepšení udržovatelnosti a rozšiřitelnosti kódu se doporučuje používat objektově orientovaný (OOP) přístup při organizaci pluginů. Výše popsané funkce jsme tedy přepracovali do jedné třídy.

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

class My_First_Plugin {
    /**
     * 构造函数,初始化插件钩子。
     */
    public function __construct() {
        // 在构造方法中将方法挂载到钩子上
        add_action( 'init', array( $this, 'load_textdomain' ) );
        add_filter( 'the_content', array( $this, 'add_footer_to_content' ) );
        add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
    }

/**
     * 加载插件的文本翻译域。
     */
    public function load_textdomain() {
        load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
    }

/**
     * 在文章内容末尾添加自定义文本。
     */
    public function add_footer_to_content( $content ) {
        if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
            $custom_text = '<div class="mfp-footer-note"><p><em>' . esc_html__( '感谢阅读!本文由“我的第一个插件”为您呈现。', 'my-first-plugin' ) . '</em></p></div>';
            return $content . $custom_text;
        }
        return $content;
    }

/**
     * 为插件添加样式。
     */
    public function enqueue_styles() {
        wp_enqueue_style( 'mfp-style', plugins_url( 'assets/css/style.css', __FILE__ ), array(), '1.0.0' );
    }
}

// 实例化插件类
$my_first_plugin_instance = new My_First_Plugin();

Všimněte si, že my… add_footer_to_content Metoda použila… esc_html__() Funkce slouží k obalení textu. Jedná se o funkci pro překlad textu, která zároveň provede potřebné escape operace na výstupním textu – což je nejlepší praktika pro bezpečné zobrazování textu. Také jsme přidali metodu na načtení šablon a podporu textových polí, což připravuje prostor pro internacionalizaci (i18n) tohoto pluginu.

Porozumění a implementace validace dat a jejich escapeování

Nikdy nesmíte důvěřovat datům zadaným uživateli ani jakýmkoli externím zdrojům. Při přijímání, zpracovávání a výstupu dat je nutné provádět jejich ověřování, čištění a escapeování. Například pokud chcete vytvořit správní stránku s formulářem pro zadávání údajů, určitě použijte funkce poskytované WordPressem, které zajišťují kontrolu oprávnění uživatelů a ověřová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.

Funkce tohoto pluginu je poměrně jednoduchá, ale při výstupu HTML již jsme ji použili. esc_html__() Provedení escapeování. Pokud plugin potřebuje zpracovávat data odeslaná uživatelem, například prostřednictvím formuláře, je nutné použít vhodné metody escapeování. sanitize_text_field(), wp_kses_post() Proveďte úklid funkcí pomocí příslušných nástrojů a následně je použijte. wp_verify_nonce() Přijde se ověřit platnost požadavku.

Vytvořit stránku pro správu pluginů

Zralý plugin obvykle vyžaduje webovou stránku pro konfiguraci v administraci. Naučíme se, jak pomocí API nastavení WordPress vytvořit jednoduchou a standardní správní stránku.

Přidat menu pro nastavení pluginů

Nejprve musíme v administraci WordPressu v nabídce “Nastavení” přidat novou podnabídku. Do vaší třídy přidejte novou metodu a v konstruktoru ji implementujte pomocí… add_action('admin_menu', ...) Hooky funkce ji volá.

Doporučujeme k přečtení. Návod pro začátečníky k vývoji pluginů pro WordPress: Vytvořte si svůj první funkční plugin od nuly.

/**
 * 注册插件管理页面。
 */
public function register_admin_menu() {
    add_options_page(
        __( '我的插件设置', 'my-first-plugin' ), // 页面标题
        __( '我的第一个插件', 'my-first-plugin' ), // 菜单标题
        'manage_options', // 所需权限
        'mfp-settings', // 菜单slug
        array( $this, 'display_settings_page' ) // 显示页面的回调函数
    );
}

Poté přidejte toto do konstruktoru:add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );

Vytvoření stránky nastavení a polí

Dále potřebujeme definovat… display_settings_page Metoda slouží k renderování HTML obsahu stránky nastavení a k registraci polí nastavení pomocí API 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.
/**
 * 显示插件设置页面。
 */
public function display_settings_page() {
    ?&gt;
    <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
            // 输出设置字段、非ce等安全字段
            settings_fields( 'mfp_settings_group' );
            do_settings_sections( 'mfp-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="cs"/></form>
    </div>
    <?php
}

/**
 * 初始化插件设置。
 */
public function initialize_settings() {
    // 注册一个设置
    register_setting(
        'mfp_settings_group', // 设置组名
        'mfp_footer_text', // 选项名
        array(
            'type' => 'string',
            'sanitize_callback' =&gt; 'sanitize_text_field', // 清理回调函数
            'default' =&gt; __( '感谢阅读!本文由“我的第一个插件”为您呈现。', 'my-first-plugin' ),
        )
    );

// 添加一个设置区域
    add_settings_section(
        'mfp_main_section',
        __( '主要设置', 'my-first-plugin' ),
        null, // 可选的区域描述回调函数
        'mfp-settings'
    );

// 向区域中添加字段
    add_settings_field(
        'mfp_footer_field',
        __( '页脚文本', 'my-first-plugin' ),
        array( $this, 'render_footer_field' ), // 渲染字段的回调函数
        'mfp-settings',
        'mfp_main_section',
        array( 'label_for' =&gt; 'mfp_footer_text' )
    );
}

Potřebujete definovat… render_footer_field Metody pro renderování skutečného vstupního pole a aktualizaci předchozího stavu. add_footer_to_content Metoda, která umožňuje získat informace z databázových možností get_option('mfp_footer_text') Čtěte text ze souboru, místo použití pevně zakódovaných řetězců. Nakonec přidejte toto do konstruktoru:add_action( 'admin_init', array( $this, 'initialize_settings' ) );

Závěr

Během této „cesty“ prostřednictvím tohoto článku jste od nuly vytvořili plně funkční WordPress plugin. Naučili jste se, jak vytvořit základní strukturu pluginu, jak používat akce a filtrovací háčky k rozšíření funkcí WordPressu, jak organizovat kód objektově za účelem zlepšení kvality, jak dodržovat bezpečnostní osvědčené postupy při ověřování a escapeování dat, a také jak využít API nastavení WordPressu k vytvoření profesionálního administrativního rozhraní.

Podstatou vývoje pluginů je pochopení systému „hooků“ a datových toků v WordPressu. Praktikujte neustále, začněte s jednoduchými funkcemi, postupně zvyšujte jejich složitost a vždy upřednostňujte bezpečnost, výkon a udržovatelnost. S nákupem zkušeností budete schopni vytvářet silné, profesionální a populární pluginy pro WordPress.

Časté dotazy

Jaké základní znalosti jsou potřebné k vývoji pluginů pro WordPress?

Potřebujete mít solidní znalosti programování v PHP, protože pluginy jsou většinou napsány v PHP. Je také nutné mít základní povědomí o HTML, CSS a JavaScriptu, protože budete pracovat s výstupním zobrazením a interakcí na stránce. Nejdůležitější je, abyste byli obeznámeni s klíčovými koncepty WordPressu, jako jsou „hooky“ (akce a filtry), cykly, struktura šablon a operace s databází (pomocí tříd jako WP_Query a WP_User_Query).

Jak ladit a testovat můj plugin?

Nejprve doporučujeme výrazně vyvíjet aplikaci v lokálním prostředí (např. Local by Flywheel, XAMPP) nebo na testovacích webových stránkách online, abyste předešli negativním vlivům na produkční webové stránky. Aktivujte režim ladění (debugging mode) v WordPressu.wp-config.phpNastavení v souborudefine( 'WP_DEBUG', true );Tímto se chyby a varování PHP zobrazí na obrazovce. Použijte to.error_log()Funkce zaznamenává vlastní informace o ladění do chybového logu serveru. Pro složitější ladění lze zvážit použití profesionálních nástrojů, jako je Query Monitor nebo Debug Bar.

Jak je moje rozšíření kompatibilní s různými verzemi WordPressu?

Během vývoje je důležité věnovat pozornost upozorněním v oficiálních dokumentacích WordPressu týkajícímch se zastaralých (zastarovaných) funkcí. Vyhněte se používání funkcí, které byly označeny jako “zastaralé”. V hlavním souboru pluginu lze toto upozornění zohlednit vhodným způsobem.Requires at leastTested up toV hlavičkových informacích deklarujte kompatibilní verzi WordPressu. Pravidelně testujte své pluginy na novějších verzích WordPressu a sledujte protokoly o hlavních aktualizacích, abyste mohli včas upravit svůj kód.

Jak zveřejnit svůj plugin do oficiálního adresáře pluginů WordPressu?

Nejprve se musíte ujistit, že váš plugin plně odpovídá oficiálním normám pro vývoj pluginů a pokynům k jejich odeslání. To zahrnuje kvalitu kódu, bezpečnost, licenční dohodu (musí být GPLv2 nebo vyšší verze) a další aspekty. Poté si na WordPress.org zarezervujete SVN repozitář. Následně odešlete kód vašeho pluginu do tohoto SVN repozitáře.trunkV adresáři a vytvořte odpovídající soubory.readme.txtSoubor (v určitém formátu). Po schválení se váš plugin objeví v oficiálním adresáři.