Een handleiding voor het ontwikkelen van WordPress-plug-ins: stap voor stap leer je hoe je je eigen plug-in maakt, van nul tot één.

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

Het begrijpen van de basis van plugins en het opzetten van een ontwikkelingsomgeving

Voordat je met het schrijven van code begint, is het van belang om de basisconcepten van WordPress-plug-ins te begrijpen en een geschikte lokale ontwikkelomgeving te voorbereiden. Een plugin is essentieel gezien een map met één of meerdere PHP-bestanden die de kernfuncties van WordPress uitbreiden of aanpassen via het systeem voor hooks (Hook-system) dat WordPress biedt. Plug-ins verschillen van thema's: ze richten zich op het toevoegen van nieuwe functies, in plaats van het veranderen van het uiterlijk van de website; zelfs wanneer je het thema vervangt, blijven de functies van de plugin meestal hetzelfde.

Om met het ontwikkelen te kunnen starten, heb je eerst een lokale WordPress-omgeving nodig. Dit kan eenvoudig worden gerealiseerd met tools als Local by Flywheel, MAMP, XAMPP of door rechtstreeks Docker-containers te gebruiken. Nadat je WordPress op je lokale computer hebt geïnstalleerd, moet je...wp-content/pluginsVerzeichnis. Hier vind je alle plugins. Maak een nieuwe map, bijvoorbeeld...my-first-pluginIn deze map moet je een hoofd-PHP-bestand maken. De naam van dit bestand is meestal dezelfde als de naam van de map.my-first-plugin.phpDeze hoofdfile is het punt van toegang voor het plugin en bevat een set speciale commentaarheaders. Deze geven WordPress informatie over de naam, beschrijving, versie en ontwikkelaar van het plugin.

Het wordt aanbevolen om dit in de ontwikkelingsomgeving te activeren.WP_DEBUGMode. Open het bestand in de wortelmap van WordPress.wp-config.phpIn het bestand moet de volgende regel worden gevonden of toegevoegd:

Aanbevolen leesmateriaal Een praktische handleiding voor het ontwikkelen van WordPress-plug-ins: van nul tot één, hoe je je eerste plug-in maakt.

define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );

Dit zal de fouten en waarschuwingen registreren in…wp-content/debug.logDeze bestanden helpen je om snel problemen op te sporen tijdens het ontwikkelingsproces. Daarnaast kan het gebruik van een krachtige code-editor of IDE (zoals VS Code of PhpStorm) de ontwikkelingsefficiëntie aanzienlijk verbeteren, aangezien deze tools over goede syntaxisondersteuning en tips beschikken voor PHP en WordPress.

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.

Maak je eerste pluginbestand.

We gaan de volledige procedure van het maken van een bestand tot het activeren van een plugin doorlopen door een eenvoudige “Hello World”-plugin te maken. De plugin zal een welkomstbericht aan de bovenkant van het beheerpaneel van de website weergeven.

In je plugin-mapmy-first-pluginIn dit proces wordt de hoofdbestand (main file) gecreëerd.my-first-plugin.phpDe basisstructuur van de inhoud van het bestand moet beginnen met de commentaren in het hoofddeel van het plugin:

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个用于学习插件开发的示例插件,它将在后台显示欢迎信息。
 * Version:           1.0.0
 * Author:            开发者姓名
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Deze commentaarkoppen zijn verplicht; WordPress gebruikt ze om je plugin op de “pluginbeheerpagina” te herkennen en te weergeven.Text DomainVoor internationaal gebruik (i18n)Domain PathDe map waar de taalbestanden zich bevinden, is opgegeven (indien nodig).

Volgens de opgegeven tekst gaan we nu de kernfuncties toevoegen. In dit voorbeeld zullen we gebruikmaken van...admin_notices‘Hook. Voeg de volgende code toe onder de commentaren in het hoofddeel:’

Aanbevolen leesmateriaal Een volledige handleiding voor het ontwikkelen van WordPress-plug-ins: een praktische tutorial van beginner tot gevorderde.

// 使用 admin_notices 钩子在管理后台输出提示信息
add_action( ‘admin_notices’, ‘my_first_plugin_display_admin_greeting’ );

/**
 * 在管理后台显示欢迎信息的函数
 * @return void
 */
function my_first_plugin_display_admin_greeting() {
    // 检查当前用户是否有权限,确保只在后台显示
    if ( ! current_user_can( ‘manage_options’ ) ) {
        return;
    }
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p><?php _e( ‘欢迎使用我的第一个插件!插件开发之旅正式开始!’, ‘my-first-plugin’ ); ?></p>
    </div>
    &lt;?php
}

Na het opslaan van het bestand, log in je in bij het WordPress-administratiepaneel en ga naar de pagina “Plug-ins”. Hier moet je een plugin zien met de naam “Mijn eerste plugin”. Klik op de knop “Activeren”. Nadat de plugin is geactiveerd, vernieuw een van de administratiepagina’s (bijvoorbeeld het dashboard). Er moet een groen bericht van succes verschijnen met de welkomstboodschap die je in je code hebt gedefinieerd. Dit is een minimale, maar functionele implementatie die aangeeft dat je ontwikkelomgeving en de structuur van je plugin correct zijn.

Core technologieën van WordPress: Hooks en filters

Het begrijpen en behendig gebruiken van hooks is essentieel voor het ontwikkelen van WordPress-plug-ins. Er zijn twee soorten hooks: actions en filters. Action-hooks bieden je de mogelijkheid om op specifieke momenten eigen code in te voegen en uit te voeren, bijvoorbeeld nadat een artikel is gepubliceerd of voordat de koppen van pagina's worden geladen. We hebben dit eerder gebruikt in…admin_noticesHet is een soort actie-haak (action hook). Filter-haakken bieden je de mogelijkheid om gegevens die worden gecreëerd of overgedragen tijdens een proces te bewerken, bijvoorbeeld de titel van een artikel of de resultaten van een query van een plugin.

Hoe voeg je een aangepaste actie toe?

De actie is voltooid.add_action()Functie toevoegen. De syntax is:add_action( ‘hook_name’, ‘your_function_name’, priority, accepted_args )De prioriteit (priority) is een hele nummer; het lagere het eerder wordt uitgevoerd. De standaardwaarde is 10. Als je bijvoorbeeld wilt dat enkele aangepaste HTML-elementen worden toegevoegd na de inhoud van een artikel:

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%
add_action( ‘the_content’, ‘my_custom_content_append’ );
function my_custom_content_append( $content ) {
    // 只在单篇文章主循环内生效
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $extra_content = ‘<div class="“my-custom-box”"><p>Dit is customiseren content dat is toegevoegd met behulp van een plugin.</p></div>’;
        $content .= $extra_content;
    }
    return $content;
}

Let op: hoewel...the_contentHet is een filter (het moet de gewijzigde versie teruggeven).$contentWordPress gebruikt dit ook als punt om een actie te triggeren. Echter, het zou nog nauwkeuriger zijn om…add_filter

Hoe voeg je een aangepaste filter toe?

De filter werkt zoals verwacht.add_filter()Functie toevoegen. Syntax:add_action()Een voorbeeld hiervan is het aanpassen van de lengte van een artikeluitdraai.

add_filter( ‘excerpt_length’, ‘my_custom_excerpt_length’, 999 );
function my_custom_excerpt_length( $length ) {
    // 将默认的55个词改为20个词
    return 20;
}

Je kunt je eigen hooks maken, zodat je plugin ook door andere ontwikkelaars of thema's kan worden uitgebreid.do_action()Om een actie-hook te definiëren, moet je gebruikmaken van...apply_filters()Een filterhook definiëren is belangrijk voor het bouwen van modulaire en uitbreidbare plugins.

Aanbevolen leesmateriaal Volledig handboek voor het ontwikkelen van WordPress plugins: van nul tot advanced niveau

Advanced plugin functionality en beste praktijken

Als de functionaliteit van een plugin steeds complexer wordt, wordt een goede codeorganisatie, veiligheid, onderhoudbaarheid en prestaties van groot belang. Een veelgebruikte methode is objectgerichte programming (OOP) om de codestructuur te organiseren, waardoor relevante functies en gegevens worden opgesloten in een hoofdclass.

De code wordt geëncapsuleerd door objectgerichte programmering te gebruiken.

Een hoofdklasse maken helpt om de staat en methoden van plugins beter te beheersen, waardoor conflicten met functionnamen worden voorkomen. Hier is een simpel voorbeeld van een OOP-structuur:

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.
<?php
/**
 * Plugin Name:       进阶示例插件
 */
if ( ! class_exists( ‘My_Advanced_Plugin’ ) ) {
    class My_Advanced_Plugin {
        /**
         * 构造方法,用于初始化钩子
         */
        public function __construct() {
            add_action( ‘init’, array( $this, ‘register_custom_post_type’ ) );
            add_action( ‘admin_menu’, array( $this, ‘add_admin_menu_page’ ) );
            add_filter( ‘the_title’, array( $this, ‘filter_post_title_prefix’ ), 10, 2 );
        }

/**
         * 注册一个自定义文章类型
         */
        public function register_custom_post_type() {
            $args = array(
                ‘public’ => true,
                ‘label’  => ‘我的产品’,
                ‘supports’ => array( ‘title’, ‘editor’, ‘thumbnail’ ),
                ‘has_archive’ => true,
            );
            register_post_type( ‘my_product’, $args );
        }

/**
         * 在文章标题前添加前缀的过滤器
         * @param string $title 原标题
         * @param int    $id    文章ID
         * @return string 修改后的标题
         */
        public function filter_post_title_prefix( $title, $id = null ) {
            if ( ! is_admin() && in_the_loop() ) {
                $title = ‘[精品] ’ . $title;
            }
            return $title;
        }

// ... 其他方法
    }
    // 实例化插件类
    new My_Advanced_Plugin();
}

Deze structuur organiseert relevante functies samen, waardoor de code duidelijker is en gemakkelijker te beheren.

De veiligheid en prestaties van plugins garanderen

Security is the top priority when developing plugins. Vertrouw nooit op de invoer van gebruikers. Voor alle gegevens die van buitenaf worden ingevoerd…$_GET$_POST$_REQUESTDe verkregen gegevens moeten worden gevalideerd (validation), gesanitiseerd (sanitization) en geëscapeseerd (escaping). WordPress biedt een reeks hulpprogramma's (helpers) hiervoor aan:
* 验证:check_ajax_referer()wp_verify_nonce()
* 清理:sanitize_text_field()sanitize_email()absint()
* 转义:esc_html()esc_url()wp_kses_post()

Voor het weergeven van data in HTML, attributen of URL's, moet je altijd de juiste ontsluitingsfuncties gebruiken. Wat betreft de prestaties: gebruik hook-functies verstandig om te voorkomen dat resource-intensieve queries bij iedere pagina-laadning worden uitgevoerd. Overweeg om de Transients API van WordPress te gebruiken om niet-kritieke, herhaalbare query-resultaten voor een bepaalde tijd op te slaan.

Realisatie van de instellingenpagina voor de plugin

De meeste plugins hebben een instellingenpagina waar de gebruiker zelf de instellingen kan aanpassen. Dit gebeurt meestal door...add_options_page()add_menu_page()Functies als ‘wait’ worden gemonteerd (of geïnstalleerd) op…admin_menuDe opties moeten worden ingesteld met behulp van de WordPress Settings API, zodat ze veilig kunnen worden geregistreerd, opgeslagen en verifieerd. Dit houdt in dat de API wordt gebruikt voor alle vereiste processen.register_setting()add_settings_section()add_settings_field()Functies als deze zorgen niet alleen voor meer veiligheid (bijvoorbeeld door het verifiëren van nonces), maar bieden ook een uniforme look & feel voor het WordPress-beheerpaneel.

Samenvatting

Het ontwikkelen van WordPress-plug-ins is een proces waarbij creativiteit wordt omgezet in functionele mogelijkheden, en dit begint met het begrijpen van de basisstructuur van een plugin en het opzetten van een lokale omgeving. Door het maken van de simpelste “Hello World”-plugin hebben we de hele werkwijze geëxperimenteerd: van het maken van de bestanden tot het activeren van de functionaliteiten. Het hart van het ontwikkelen ligt in het diep begrijpen en flexibel gebruiken van het krachtige hook-systeem van WordPress – acties en filters – die de brug vormen tussen WordPress zelf en andere onderdelen van het systeem. Naarmate de functionaliteiten van de plugin uitbreiden, zijn objectgerichte programmering, het naleven van veilige coderingsschrijfwijzen (verificatie, schoonmaken van gegevens, ontsluiting van speciale tekens), en het gebruik van de Settings API voor het bouwen van instellingenpagina’s belangrijke stappen om een stabiele, veilige, onderhoudbare en uitbreidbare plugin te creëren. Door deze richtlijnen en beste praktijken te volgen, kun je met zelfvertrouwen verschillende soorten high-quality WordPress-plug-ins bouwen, van simpele hulpmiddelen tot complexe toepassingen.

Veelgestelde vragen (FAQ)

Welke voorwaartse kennis is vereist om een WordPress-plugin te ontwikkelen met de naam ###?
Je moet basiskennis hebben van de PHP-programmeringstaal, omdat de plugins voornamelijk in PHP zijn geschreven. Een begrip van HTML, CSS en JavaScript is handig om plugins te kunnen maken die interactie bieden op de front-end. Het belangrijkste is dat je vertrouwd bent met de basisconcepten van WordPress, zoals artikelen, pagina's, categorieën, gebruikersrollen en vooral het hook-systeem.

Hoe debug je een WordPress-plugin die je aan het ontwikkelen bent?

Het wordt sterk aanbevolen om dit in de ontwikkelingsomgeving te activeren.WP_DEBUGDe betreffende instellingen zijn beschreven in de sectie over het opzetten van de omgeving. Hierdoor worden PHP-fouten, waarschuwingen en berichtgevingen in een logbestand opgeslagen. Daarnaast kun je…error_log()Functionen of hulpprogramma's (helper functions) zoalsvar_dump()Samarwerkenwp_die()De waarden van de variabelen moeten worden gecontroleerd. De console en het Network-tabblad in de browserdevelopertools zijn ook onmisbaar voor het opsporen en oplossen van problemen met JavaScript en AJAX-verzoeken.

Hoe kan mijn plugin worden geïntegreerd met verschillende versies van WordPress?

In het code van je plugin moet je controleren of bepaalde functies of klassen beschikbaar zijn in de huidige versie van WordPress, voordat je ze gebruikt. Hiervoor kun je gebruikmaken van…function_exists()is_admin()Voor het bepalen van condities, zoals wanneer een bepaalde actie moet worden uitgevoerd, kun je gebruikmaken van annotaties in de plugin-hoofdbestand. De details hierover staan in de beschrijving van de plugin.Requires at least:Vul het veld in om de minimale versie van WordPress aan te geven die vereist is. Het is een goede gewoonte om regelmatig de compatibiliteit van je plugin met de meest recente versie van het WordPress-core-systeem te testen.

Hoe kan ik mijn plugin internationaal maken, zodat het meerdere talen ondersteunt?

Je moet de vertaalfunctie van WordPress gebruiken om alle tekststrings die worden vertaald te omringen. Hier is een voorbeeld:__( ‘文本’, ‘your-plugin-text-domain’ )Om de vertaalde tekst weer te geven, gebruik je_e( ‘文本’, ‘your-plugin-text-domain’ )De tekst moet direct worden weergegeven. Je moet dit op de juiste manier instellen in de commentaren bovenin het plugin.Text DomainDomain PathVervolgens wordt met een tool als Poedit een nieuwe vertaling gemaakt..potTemplatebestanden: vertalers kunnen erop baseren om nieuwe content te creeren..po.moTaalbestand.

Nadat de ontwikkeling is afgerond, hoe stuur je het plugin vervolgens naar de officiële plugin-directory?

Eerst moet je een account registreren op de officiële WordPress-website en het plugin indienen voor review. Je code moet voldoen aan de officiële coderingstandaarden en -gidsen, waaronder veiligheid, het ontbreken van schadelijk code, en compatibiliteit met GPL. De structuur van je plugin-map moet de hoofd-PHP-bestand en een aantal andere essentiële bestanden bevatten.readme.txtDe bestanden (in een specifiek formaat) worden samen met eventuele screenshots en iconen ingediend. De review-proces kan enkele tijd in beslag nemen; het team zal je code controleren om te ervoor te zorgen dat deze voldoet aan de vereisten.