Ontwikkelingshandleiding voor WordPress-plug-ins: maak je eigen aangepaste functionaliteitsmodules vanaf nul.

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

De kracht van WordPress zit niet alleen in zijn kernfuncties, maar ook in zijn mogelijkheid om onbeperkt te worden uitgebreid met plugins. Als je een specifieke functie voor je website nodig hebt die niet wordt ondersteund door een bestaande plugin, wordt het heel belangrijk om te leren hoe je plugins ontwikkelt. In deze handleiding worden je stap voor stap geleid door de basisconcepten, zodat je je eerste WordPress-plugin met alle benodigde functies kunt bouwen en de essentiële technieken van maatwerkontwikkeling onder de knie kunt krijgen.

Pluginontwikkelingsomgeving en basisstructuur

Voordat je met het schrijven van code begint, heb je een geschikte ontwikkelomgeving en een duidelijke projectstructuur nodig. Dit zorgt niet alleen voor een efficiënte werkwijze, maar ook ervoor dat het plugin voldoet aan de standaarden van WordPress, waardoor het eenvoudiger te onderhouden en te distribueren is.

Het opzetten van een lokale ontwikkelomgeving.

Het wordt aanbevolen om lokale serversoftware zoals XAMPP, MAMP of Local by Flywheel te gebruiken om een WordPress-omgeving op te zetten. Dit biedt de mogelijkheid om veilig te testen en te debuggen op je eigen computer. Zorg ervoor dat je code-editor (bijvoorbeeld VS Code of PhpStorm) PHP-syntaxis ondersteunt met highlighten en suggesties voor de code; dit zal de ontwikkelingsefficiëntie aanzienlijk verbeteren.

Aanbevolen leesmateriaal WordPress-pluginontwikkelingsgids: van nul beginnen met het bouwen van je eerste extensie

Het begrijpen van de basiscomposities van plugins

Een zeer simpel WordPress-plugin kan bestaan uit één enkele bestand, maar een goed georganiseerd plugin bevat meestal meerdere mappen en bestanden. Het belangrijkste bestand is het hoofdbestand (de ‘main file’) van het plugin, waarin een specifieke commentaar (plugin header) moet staan. Dit commentaar dient het WordPress-systeem te informeren over het bestaan van het plugin.

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.

De hoofdbestand van een plugin heet meestal naar de functionaliteit van de plugin, bijvoorbeeld…my-custom-functionality.phpDe bovenste helft moet de standaard-plugin-informatiekop bevatten.

<?php
/**
 * Plugin Name:       我的定制功能模块
 * Plugin URI:        https://example.com/my-custom-plugin
 * Description:       这是一个用于演示的WordPress定制功能插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-custom-plugin
 */

Deze commentaar geeft aan waar de informatie vandaan komt die door het plugin wordt herkend en weergegeven op de “Plugins”-pagina in het WordPress-administratiepaneel.Text DomainGebruikt voor internationale vertalingen. Daarna moet al het functionaliteitscode worden opgeslagen in deze bestand of in andere bestanden die vanuit deze bestand worden ingevoerd.

Core development: Action hooks en filters

De plugin-architectuur van WordPress is gebaseerd op het “Hook”-systeem, wat de basis vormt voor de uitbreidbaarheid van het platform. Het begrijpen en behendig gebruiken van hooks is essentieel voor het ontwikkelen van plugins. Er bestaan twee soorten hooks: Action Hooks en Filter Hooks.

Functies toevoegen met action-hooks

Action hooks bieden je de mogelijkheid om op bepaalde tijdstippen of wanneer bepaalde gebeurtenissen plaatsvinden je eigen PHP-functies in te voegen en uit te voeren. Denk bijvoorbeeld aan het uitvoeren van een actie wanneer een artikel wordt gepubliceerd, of het toevoegen van een aangepaste code aan de voet van een webpagina.

Aanbevolen leesmateriaal Van nul naar één: Een volledig handboek en beste praktijken voor het ontwikkelen van WordPress plugins

Je kunt gebruikmaken vanadd_action()De functie maakt je eigen gedefinieerde functie beschikbaar voor een specifiek action-hook. Het volgende voorbeeld toont hoe je een custom meta-box kunt toevoegen op de artikelbewerkingssite in het beheerpaneel.

// 将函数挂载到‘add_meta_boxes’这个动作钩子
add_action( 'add_meta_boxes', 'mcp_add_custom_meta_box' );

function mcp_add_custom_meta_box() {
    add_meta_box(
        'mcp_custom_box_id',          // 元框的唯一ID
        '自定义设置',                 // 元框标题
        'mcp_custom_meta_box_html',   // 回调函数,用于输出HTML内容
        'post',                       // 在‘文章’编辑页面显示
        'side',                       // 显示在侧边栏
        'high'                        // 优先级
    );
}

// 定义输出元框HTML内容的回调函数
function mcp_custom_meta_box_html( $post ) {
    // 获取已保存的值
    $value = get_post_meta( $post->ID, '_mcp_custom_field', true );
    // 输出一个非安全字段
    echo '<label for="mcp_field">自定义字段:</label>';
    echo '<input type="text" id="mcp_field" name="mcp_field" value="' . esc_attr( $value ) . '" />';
}

Gegevens bewerken met filter-haken

Filter-hooks bieden je de mogelijkheid om alle gegevens die door WordPress worden verwerkt te bewerken. In tegenstelling tot action-hooks moeten filter-functies een waarde ontvangen en een (gewijzigde) waarde teruggeven. Je kunt dit dus gebruiken om gegevens op de manier die je wenst te verwerken, voordat ze worden gebruikt in WordPress.add_filter()Een functie om filters te toevoegen.

Als voorbeeld: wanneer je de inhoud van een artikel wijzigt, wordt er automatisch een copyright-verklaring toegevoegd aan het eind van het 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_filter( 'the_content', 'mcp_add_copyright_to_content' );

function mcp_add_copyright_to_content( $content ) {
    // 仅对单篇文章页面生效
    if ( is_single() ) {
        $copyright_text = '<p><em>De auteursrechten van dit artikel berusten bij deze website. Wanneer u het artikel wilt reproduceren, moet u de bronvermelding opnemen.</em></p>';
        $content .= $copyright_text;
    }
    // 必须返回修改后的内容
    return $content;
}

Implementeren van databeheer voor plugins

Plugins moeten vaak gegevens opslaan, ophalen en updaten. WordPress biedt de krachtige Option API en Article Metadata API aan om deze vereisten veilig te kunnen verwerken, zonder dat er rechtstreeks met de database wordt gewerkt.

Gebruik de Option API om instellingen op te slaan.

Voor de globale instellingen van plugins (zoals API-sleutels, schakelaarstatusen, etc.) moet de Option API worden gebruikt. Deze API biedt de mogelijkheid om deze instellingen te bepalen.add_option()get_option()update_option()Functies zoals `dict()` worden gebruikt om gegevens op basis van sleutel-waarde-paarden te beheren.

Als voorbeeld: maak een eenvoudige schakelaarinstelling voor het plugin.

Aanbevolen leesmateriaal Het ontwikkelen van WordPress-plug-ins: van nul tot één, waarbij je je eerste uitbreidingsmodule maakt.

// 在插件激活时设置一个默认选项(通常写在激活钩子函数里)
register_activation_hook( __FILE__, 'mcp_plugin_activate' );
function mcp_plugin_activate() {
    if ( false === get_option( 'mcp_feature_enabled' ) ) {
        add_option( 'mcp_feature_enabled', 'yes' );
    }
}

// 在代码中获取这个选项的值
$is_enabled = get_option( 'mcp_feature_enabled', 'yes' ); // 第二个参数是默认值
if ( $is_enabled === 'yes' ) {
    // 执行功能
}

Artikelmeta-data opslaan en ophalen

Voor gegevens die zijn gerelateerd aan een bepaald artikel, pagina of een aangepaste artikeltype (zoals de aangepaste velden in het voorbeeld met de meta-boxen hierboven), is de Post Meta API nodig. De belangrijkste functie hiervoor is…update_post_meta()get_post_meta()

Je moet luisteren naar…save_postAction hooks worden gebruikt om de gegevens op te slaan die de gebruiker heeft ingetypt in de frontend-elementen. Tijdens het opslaan moet veiligheidsverificatie (Nonce-controle) en toegangscontrole worden uitgevoerd.

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.
add_action( 'save_post', 'mcp_save_custom_field_data' );

function mcp_save_custom_field_data( $post_id ) {
    // 检查Nonce字段(应在元框HTML中输出wp_nonce_field)
    if ( ! isset( $_POST['mcp_meta_box_nonce'] ) || ! wp_verify_nonce( $_POST['mcp_meta_box_nonce'], 'mcp_save_data' ) ) {
        return;
    }
    // 检查自动保存
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }
    // 检查用户权限
    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return;
    }
    // 安全地获取并保存字段数据
    if ( isset( $_POST['mcp_field'] ) ) {
        $my_data = sanitize_text_field( $_POST['mcp_field'] );
        update_post_meta( $post_id, '_mcp_custom_field', $my_data );
    }
}

Een pagina voor plug-inbeheer maken

Voor plugins met complexe functies is meestal een speciale beheerpagina nodig, zodat de webbeheerder de verschillende opties van de plugin kan instellen. WordPress biedt een uitgebreide API aan om een gestructureerd beheermenu en -pagina te creeren.

Beheerdersmenu op bovenste niveau toevoegen

Gebruikadd_menu_page()De functie kan een topmenu-item toevoegen aan de linkerkant van de navigatiebalk in de achtergrond voor je plugin. Je moet de titel van de pagina, de naam van het menu, de vereiste rechten, een alias voor het menu, en de callback-functie die de inhoud van de pagina weergeeft, opgeven.

add_action( 'admin_menu', 'mcp_register_admin_menu' );

function mcp_register_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',               // 菜单名称
        'manage_options',         // 所需权限(通常为manage_options)
        'mcp-plugin-settings',    // 菜单别名(slug)
        'mcp_render_settings_page', // 渲染页面的回调函数
        'dashicons-admin-generic', // 图标(使用Dashicons)
        80                         // 菜单位置
    );
}

// 定义渲染设置页面的函数
function mcp_render_settings_page() {
    // 检查用户权限
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&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
            // 输出设置字段、非安全字段等(需要配合settings API使用)
            settings_fields( 'mcp_settings_group' );
            do_settings_sections( 'mcp-plugin-settings' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="nl"/></form>
    </div>
    &lt;?php
}

Vormen bouwen met de Setup-API

Om formulieropties op een veiliger en georganiseerder manier te verwerken, wordt het sterk aanbevolen om de WordPress Settings API te gebruiken. De API verzorgt automatisch de verificatie van Nonces, controleert de toegangsrechten, slaat gegevens op en toont foutmeldingen. De belangrijkste stappen om de Settings API in te gebruiken zijn:register_setting()Registratie-instellingen, gebruikenadd_settings_section()Voeg een instellingengebied toe, en gebruik dit gebied om de gewenste instellingen te maken.add_settings_field()Voeg specifieke instellingen toe.

Dit zorgt ervoor dat de instellingenpagina van je plugin overeenkomt met het ontwerp van WordPress en dat de beste beveiligingspraktijken worden gevolgd.

Samenvatting

Met deze gids hebt u de belangrijkste stappen van het ontwikkelen van WordPress-plug-ins gezet: u begon met het opzetten van een ontwikkelingsomgeving en het begrijpen van de basisstructuur van WordPress, ging vervolgens verder naar het essentiele onderdeel van de extensibiliteit van WordPress, namelijk het hook-systeem, en leerde hoe u functionaliteiten kunt toevoegen of bewerken met behulp van actions en filters. Daarna hebt u de Option API en de Article Metadata API gebruikt om gegevens van plug-ins veilig te beheren. Ten slotte hebt u ontdekt hoe u een professionele en veilige instellingenpagina voor uw plug-in kunt maken.

Het ontwikkelen van plugins is een zeer praktische proces; je leert het echt alleen door het zelf uit te proberen. Het is verstandig om met een eenvoudig vereiste te starten, bijvoorbeeld “een auteursprofiel toevoegen aan het eind van elke artikel”, en de hierboven genoemde kennis steeds verder toe te passen. Raadpleeg regelmatig relevante bronnen.WordPress-officiële handleiding voor pluginsMet behulp van codevoorbeelden en referenties kun je krachtige, elegant geschreven en aangepaste plugins bouwen, waarmee je alle mogelijkheden van WordPress ten volle kunt benutten.

Veelgestelde vragen (FAQ)

Welke voorwaartse kennis is vereist om een WordPress-plugin te ontwikkelen?

Je moet basiskennis hebben van PHP-programmering, moet op de hoogte zijn van HTML en CSS, en een eerste indruk hebben van de basisconcepten van WordPress (zoals artikelen, pagina's, cycli en template-taggen). Het is niet vereist om vertrouwd te zijn met objectgerichte programmering (OOP), maar dit is zeer handig voor het bouwen van complexe plugins.

Moet de hoofdfail van een plugin een specifiek naam hebben?

Er is geen verplichting, maar voor meer duidelijkheid en een georganiseerde structuur wordt het meestal aanbevolen om namen te gebruiken die de functionaliteit van het plugin beschrijven.my-gallery-plugin.phpHet enige vereiste is dat de top van het bestand de juiste plugin-headcommentaren bevat. WordPress herkent de plugin op basis van deze commentaren.

Hoe kan ik zorgen dat mijn plugin geen conflicten veroorzaakt met andere plugins?

Het is een goede praktijk om alle functies, klassen, constanten en optienamen een unieke prefix te geven om conflicten te voorkomen. Bijvoorbeeld: gebruik geen…get_data()Zo'n algemene functionnaam zou beter niet worden gebruikt…mcp_get_data()(Als je het hebt over de afkorting van je plugin, mcp, moeten de namen van de opties ook op deze manier zijn opgesteld.)mcp_settings_array

Nadat de plugin is ontwikkeld, zijn er verschillende manieren om deze te distribueren aan anderen voor gebruik:

Verpak je pluginmap in een ZIP-bestand. Gebruikers kunnen dit ZIP-bestand direct uploaden en installeren op de WordPress-beheerpagina “Plugins” → “Installeer plugins” → “Upload plugin”. Als je je plugin wilt publiceren in de officiële WordPress-plugincatalogus, moet je de vereisten nog strenger naleven.Submitting GuidelinesEn de code wordt onderzocht door een codebeoordelaar.

Moet ik een plugin ontwikkelen op een procedurale of objectgerichte manier?

Voor eenvoudige, kleine plugins is de procedurale benadering (met onafhankelijke functies) directer en sneller. Voor grotere, complexere plugins biedt de objectgerichte benadering (met klassen) een betere organisatie van het code, waardoor de onderhoudbaarheid en hergebruikbaarheid verbeteren. Beide methoden worden in de WordPress-gemeenschap breed geaccepteerd.