Volledig handboek voor het ontwikkelen van WordPress plugins: van het begin tot het bouwen van professionele uitbreidingen

3 minuten leestijd
2026-03-15
2026-06-05
2,517
Ik verdien commissies wanneer je via de onderstaande links winkelt, zonder dat dit extra kosten voor jou met zich meebrengt.

Waarom zou je een WordPress-plugin ontwikkelen?

WordPress is het populairste content management systeem ter wereld, en de grote schaalbaarheid van het systeem is te danken aan het plugin-ecosysteem. Het ontwikkelen van eigen plugins biedt de mogelijkheid om specifieke behoeften van een website te vervullen, maar ook om deze oplossingen te commercialiseren en te delen met miljoenen gebruikers wereldwijd – zelfs om aanzienlijke inkomsten te genereren. Dit is anders dan wanneer je rechtstreeks de thema's van WordPress aanpast.functions.phpTen opzichte van bestanden bieden plugins meer modulariteit, onderhoudsgemak en portabiliteit. Een professionele plugin werkt in iedere WordPress-thema dat voldoet aan de standaarden, waardoor de functionaliteit onafhankelijk en stabiel blijft.

Het begrijpen van de kernarchitectuur van WordPress is de basis voor het ontwikkelen van plugins. WordPress gebruikt een eventgedreven systeem met zogenoemde hooks, waaronder actions en filters. Dit biedt ontwikkelaars de mogelijkheid om hun eigen code op specifieke punten in de uitvoering van het systeem te plakken, waardoor ze de kernfuncties kunnen wijzigen of uitbreiden. Daarnaast is het van belang om de officiële codingstandaarden en beveiligingsregels van WordPress te volgen (bijvoorbeeld datavalidatie, ontsnipping van uitgegeven inhoud, en het controleren op non-CSS-verificatie). Dit is een voorwaarde voor het ontwikkelen van veilige en efficiënte plugins.

Maak je eerste plugin

Het eerste stap in het ontwikkelen van een plugin is het maken van het hoofdbestand van de plugin. Dit bestand vormt de ingangspunt van de plugin en bevat de meta-informatie over de plugin.

Aanbevolen leesmateriaal WordPress-pluginontwikkelingsgids: van nul tot een eigen functie

Maak een hoofdpluginbestand.

Elk plugin moet een hoofdPHP-bestand hebben, waarin commentaren in de header staan die informatie over het plugin aan WordPress overdragen. Maak een bestand met de naam...my-first-plugin.phpDeze bestand en voer de volgende inhoud in:

UltaHost WordPress-hosting
30-daagse garantie voor het terugbetalen van het geld, onbeperkt bandbreedte- en databestand, gratis DDoS-beveiliging, en een prijsvoordeel van 50% bij een aankoop van 3 jaar.
<?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
 */

De map die deze bestand bevat (die kan worden genoemd...)my-first-plugin) Verstuur het naar het installatieverlies van WordPress./wp-content/plugins/Log in bij het WordPress-administratiepaneel en op de pagina “Plugins” kun je je plugin zien en activeren. De plugin heeft op dit moment nog geen functies, maar je hebt wel de basisstructuur met succes opgebouwd.

Een eenvoudige functie toevoegen

Volgens de opgegeven tekst gaan we nu een basisfunctie toevoegen aan het plugin: automatisch toevoegen van een aangepaste tekst aan het eind van de artikelinhoud. We gaan dit doen met behulp van...the_contentDeze filterhook… net zoals eerder gezegd.my-first-plugin.phpVoeg de volgende code onder de commentaren in het bestandskop:

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

/**
 * 在文章内容后追加自定义文本
 *
 * @param string $content 文章原始内容。
 * @return string 修改后的内容。
 */
function myfp_add_text_to_content( $content ) {
    // 确保只在主循环的单篇文章页面执行
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = '<p><em>Dank je voor het lezen! Deze tekst is ondersteund door “Mijn eerste plugin”.</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
// 将函数挂载到‘the_content’过滤器
add_filter( 'the_content', 'myfp_add_text_to_content' );

Deze code definieert een functie.myfp_add_text_to_contentHet ontvangt de inhoud van de artikelen.$contentAls parameter wordt de gewenste HTML-content gebruikt. Binnen de functie wordt met behulp van conditionele statements gecontroleerd of deze HTML-content is opgenomen in de hoofdquery van de pagina met één artikel. Als dit het geval is, wordt de HTML-content toegevoegd aan de bestaande inhoud. Ten slotte wordt de geheelte inhoud gebruikt voor het weergeven op de pagina.add_filter()De functie maakt deze zelfgemaakte functie beschikbaar voor gebruik.the_contentHet is toegevoegd aan de filter. Nadat je de bestand hebt gesaved, kun je op een willekeurige artikel op de website kijken en je ziet dat de opgegeven tekst met succes is toegevoegd.

In dieper gedachten over de architectuur van plugins en de beste praktijken...

Naarmate de functionaliteit van plugins complexer wordt, zijn een goede architectuur en goede coderingspraktijken van essentieel belang. Dit gaat niet alleen om de kwaliteit van de code, maar ook om de veiligheid, de prestaties en de compatibiliteit met andere plugins of thema's.

Aanbevolen leesmateriaal WordPress-pluginontwikkeling vanaf nul: bouw je eigen functies en extensies

Code organiseren met klassen

Het is een goede gewoonte om voor plugins met meerdere functies en mogelijkheden objectgerichte programming (OOP) te gebruiken. Hierdoor worden relevante functies geïncapsuleerd in klassen, waardoor conflicten tussen functienamen worden vermeden en de code eenvoudiger te beheren is. Hieronder staat een simpel voorbeeld van de structuur van een pluginklasse:

&lt;?php
/**
 * Plugin Name: 我的高级插件
 */
if ( ! defined( &#039;ABSPATH&#039; ) ) {
    exit;
}

class My_Advanced_Plugin {
    /**
     * 构造方法,用于初始化钩子。
     */
    public function __construct() {
        // 在构造方法中挂载所有钩子
        add_action( &#039;admin_menu&#039;, array( $this, &#039;add_admin_menu&#039; ) );
        add_filter( &#039;the_content&#039;, array( $this, &#039;modify_content&#039; ) );
    }

/**
     * 添加后台管理菜单。
     */
    public function add_admin_menu() {
        add_options_page(
            &#039;我的插件设置&#039;,
            &#039;我的插件&#039;,
            &#039;manage_options&#039;,
            &#039;my-advanced-plugin-settings&#039;,
            array( $this, &#039;render_settings_page&#039; )
        );
    }

/**
     * 渲染设置页面。
     */
    public function render_settings_page() {
        echo &#039;<div class="“wrap”"><h1>Mijn plug-ininstellingen</h1><p>Dit is de instellingenpagina.</p></div>';
    }

/**
     * 修改文章内容。
     */
    public function modify_content( $content ) {
        if ( is_single() ) {
            $content .= '<p><strong>[Verwerkt door mijn premium-plugin]</strong></p>';
        }
        return $content;
    }
}
// 初始化插件
new My_Advanced_Plugin();

In dit voorbeeld zijn alle functionaliteiten geïncapsuleerd in één enkele component of module.My_Advanced_PluginIn de klasse. De constructor.__constructVerwend om acties en filter-haken centraal te mounten. Methodeadd_admin_menuGebruikadd_options_pageDe functie heeft een subpagina toegevoegd onder het menu voor instellingen in de WordPress-backoffice. Het gebruiken van klassen maakt het mogelijk om de code duidelijker te organiseren.array($this, ‘method_name’)De syntax registreert klassemethoden als hook-callback-functies.

Implementeren van plugin-instellingen en data-opslag

Een professioneel plugin moet meestal de mogelijkheid bieden voor gebruikers om het te configureren. WordPress biedt een settings-API aan om opties veilig te kunnen creeren, verifiëren en opslaan. Eerst moeten we een settings-optie registreren en een settings-pagina maken die bevat formuliervelden.add_admin_menuMethod-relatedrender_settings_pageIn deze methode kunnen we een formulier bouwen:

hosting.com gedeelde hosting
Hoge prestaties met AMD EPYC CPU's, NVMe SSD opslag en LiteSpeed, 24/7 deskundige interne ondersteuning, geavanceerde beveiligingsmaatregelen waaronder SSL, bescherming tegen brute kracht, malware en DDoS, besparingen tot 73%
public function render_settings_page() {
    ?&gt;
    <div class="“wrap”">
        <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
        <form action="/nl/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
            <?php
            // 输出设置字段、非ce等
            settings_fields( 'my_advanced_plugin_options' );
            do_settings_sections( 'my-advanced-plugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="nl"/></form>
    </div>
    &lt;?php
}

Vervolgens moeten we de instellingen en velden registreren wanneer het plugin wordt 초기iseerd, bijvoorbeeld in de constructor van de klasse of in een aparte initialisatie-methode:

public function __construct() {
    add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
    add_action( 'admin_init', array( $this, 'register_settings' ) );
}

public function register_settings() {
    register_setting(
        'my_advanced_plugin_options', // 选项组
        'my_advanced_plugin_custom_text', // 选项名
        array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
    );

add_settings_section(
        'my_advanced_plugin_main_section',
        '主要设置',
        null,
        'my-advanced-plugin-settings'
    );

add_settings_field(
        'custom_text_field',
        '自定义文本',
        array( $this, 'render_custom_text_field' ),
        'my-advanced-plugin-settings',
        'my_advanced_plugin_main_section'
    );
}

public function render_custom_text_field() {
    $value = get_option( 'my_advanced_plugin_custom_text', '默认文本' );
    echo '<input type=“text” name=“my_advanced_plugin_custom_text” value=“' . esc_attr( $value ) . '” />';
}

De opties die zijn ingesteld voor het opslaan via de API kunnen worden gebruikt.get_option(‘my_advanced_plugin_custom_text’)Op veilige manier verkrijgen op iedere plek, en gebruiken in de logica van de plugin-functies.

Plugin-publicatie en onderhoud

Nadat de ontwikkeling is afgerond, moet je besluiten hoe je het plugin aan de gebruikers kunt leveren en hoe je het op de lange termijn kunt onderhouden.

Aanbevolen leesmateriaal Ultimatumgids voor het ontwikkelen van WordPress-plug-ins: van nul tot een zelfgemaakte functionaliteit

Internationalisatie en lokalisatie voorbereiden

Om je plugin beschikbaar te maken voor gebruikers overal ter wereld, is internationalisatie (i18n) een essentieel stap. Dit betekent dat je alle tekststringen die worden gebruikt door de gebruiker met specifieke functies moet omringen. In het begin van het plugin hebben we dit al gedefinieerd.Text Domain: my-first-pluginIn de code moet voor de strings die moeten worden vertaald gebruik worden gemaakt van een speciale methode of techniek.()_e()Function. Voorbeeld: verander het eerder gedefinieerde customere tekst in:$custom_text = ‘’ . esc_html(‘感谢阅读!本文由“我的第一个插件”提供支持。’, ‘my-first-plugin’) . ‘’;Daarna kunt u gebruikmaken van tools als Poedit om dit te realiseren..potTemplatebestanden, bedoeld om door vertalers verschillende talen te genereren..moHet document.

Versie-updates en compatibiliteit

Als je een bug fixt of een nieuwe functie toevoegt, moet je de versienummer van het plugin updaten. In de WordPress-pluginbibliotheek gebeurt dit door het versienummer van het hoofdbestand te wijzigen en het nieuwe bestand te verzenden.readme.txtDe bestanden moeten worden gebruikt om het proces af te ronden. Voor plugins die je zelf distribueert, moet je ervoor zorgen dat gebruikers worden geïnformeerd over nieuwe updates. Een veelgebruikte methode is om een update-checker-bibliotheek te integreren. Het is nog belangrijker om voor elke update de plugin grondig te testen in verschillende versies van WordPress en PHP, om de compatibiliteit met oudere versies te garanderen.readme.txtHet is een goede praktijk om in het bestand duidelijk op te geven welke minimale versie van WordPress vereist wordt voor het gebruik van de plugin, en welke versies van WordPress de plugin met succes getest zijn.

InterServer gedeelde hosting
Shared hosting $2.50 USD per maand, eerste maand $0.1 USD promo code tryinterserver, 461 cloud apps scripts, een klik te installeren.

Samenvatting

Het ontwikkelen van WordPress-plug-ins is een proces waarbij ideeën worden omgezet in functionele onderdelen die worden geïntegreerd in een grote ecosystem. Het begint met het maken van een simpel….phpHet begint met het begrijpen en gebruiken van het hook-systeem; hiermee kun je de functionaliteit van je plugin stap voor stap uitbreiden. Het toepassen van een objectgerichte architectuur, het volgen van de API voor het beheersen van instellingen, en het voorbereiden op internationalisatie zijn belangrijke stappen op weg naar professionele ontwikkeling. Houd altijd rekening met de beveiliging (verificatie, ontsnapping van gevaarlijke tekens, niet-CES-compatibiliteit) en de prestaties van je plugin, en plan goed hoe je de plugin gaat publiceren en updaten. Door continu te oefenen en de beste praktijken uit de community te leren, kun je een krachtige, veilige en populaire WordPress-plugin bouwen.

Veelgestelde vragen (FAQ)

Welke basiskennis is vereist om een WordPress-plugin te ontwikkelen?

Je moet een solide basis in PHP-programmering hebben, omdat de kernlogica van het plugin in PHP is geschreven. Daarnaast is een basiskennis van HTML, CSS en JavaScript vereist voor het bouwen van front-end-interfaces en interacties. Het belangrijkste is om de basisarchitectuur van WordPress te begrijpen, met name het hook-systeem (actions en filters), concepten als cycli en de manier van interactie met de database (bijvoorbeeld via WP_Query). Het zijn essentiële onderdelen voor een efficiënte ontwikkeling.

Hoe voorkom ik dat mijn plugin conflicteert met andere plugins?

Het belangrijkste om conflicten te voorkomen, zijn goede namenconventies en het afsluiten (encapsuleren) van code. Gebruik voor alle functies, klassen, variabelen en optienamen een unieke prefix. Het is vaak handig om afkortingen of specifieke namen van plugins te gebruiken.myplugin_function_nameIn plaats van algemeen geldend…add_custom_textProbeer de code zoveel mogelijk te verpakken in klassen of namenruimtes. Wanneer je globale functies (‘hooks’) toevoegt, moet je goed overwegen welk effect deze hebben en voeg indien nodig bedingingen toe. Gebruik altijd de API’s die worden geboden door het WordPress-core, in plaats van zelfgemaakte globale variabelen.

In welke map moeten de plugins worden opgeslagen?

WordPress-plug-ins moeten worden opgeslagen in een specifieke map./wp-content/plugins/In de map vind je alle plugins. Elke plugin kan een apart bestand zijn..phpDe bestanden zijn geschikt voor minimalistische plugins, maar een meer gebruikelijke methode is om een submap te maken met dezelfde naam als de plugin (bijvoorbeeld).../wp-content/plugins/my-awesome-plugin/Vervolgens worden de hoofdbestanden en andere bronnen (zoals JavaScript, CSS en afbeeldingen) opgeslagen in deze map. Deze structuur helpt bij het behouden van een georganiseerde en overzichtelijke indeling van de bestanden.

Hoe maak ik een beheerpagina voor mijn plugin?

Je kunt functies gebruiken die WordPress biedt om pagina's toe te voegen aan het achtergrondmenu. Enkele veelgebruikte functies zijn:add_menu_page()(Topmenu toevoegen)add_submenu_page()(Toevoegen van een submenü) enadd_options_page()(Voeg dit toe aan het submenu “Instellingen”.) Tijdens het maken van een pagina moet je een callback-functie specificeren om de HTML-content van de pagina uit te geven. Voor complexe instellingenpagina's wordt het sterk aanbevolen om de WordPress-instellingen-API te gebruiken om het registreren, verifiëren en opslaan van formuliervelden veilig te kunnen bewerken.