WordPress-pluginontwikkeling: Een gids om van nul tot één je eerste functionaliteit te bouwen

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

Forbereidende werkzaamheden en opzet van de omgeving

Voordat je begint met schrijven van code, heb je een geschikte ontwikkelomgeving nodig. Dit omvat een lokale installatie van WordPress en een code-editor. Het wordt aanbevolen om tools als XAMPP, MAMP, Local by Flywheel of Laragon te gebruiken om snel een lokale serveromgeving op te zetten. Zorg ervoor dat je omgeving is uitgerust met een recente versie van PHP (het wordt aanbevolen om PHP 7.4 of een latere versie te gebruiken) en MySQL/MariaDB.

Volgens de opgegeven tekst moet je de basisstructuur van WordPress plugins begrijpen. Het belangrijkste bestand van een plugin is een hoofd-PHP-bestand. De naam van dit bestand en de naam van de map waarin het zich bevindt kunnen worden aangepast, maar er moet een specifieke commentaar (plugin header) worden opgenomen om WordPress te laten weten dat het om een plugin gaat. Dit commentaar dient als aankondiging van de plugin. Je vindt dit hoofdbestand in de installatie-map van WordPress. wp-content/plugins Maak een nieuwe map onder de bestaande map, bijvoorbeeld: my-first-plugin

In deze map maak je je hoofdpluginbestand, bijvoorbeeld met de naam my-first-plugin.phpDe opening van deze bestand moet de standaardcommentaren met informatie over het plugin bevatten.

Aanbevolen leesmateriaal WordPress Plugin Development Guide for Beginners: Build Your First Custom Feature Extension from Scratch

Maak je eerste pluginbestand.

Nu gaan we de basis van het plugin maken. Open het hoofd-PHP-bestand in je plugin-map en voeg de volgende standaard-plugin-informatie toe.

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
 * Domain Path:       /languages
 */

Deze commentaar is belangrijk voor WordPress om plugins te herkennen. Hierin staat…Plugin Name Dit is een verplicht onderdeel; de overige onderdelen zijn optioneel. Na het opslaan van het bestand kun je deze nieuwe plugin vinden op de “Plugins”-pagina in het WordPress-administratiepaneel en deze activeren. Op dit moment beschikt de plugin over geen functies.

Een simpel functie toevoegen aan een plugin

Een van de simpelste functies is het toevoegen van een aangepast beheermenu aan de administratieve backend van de website. We zullen dit gebruiken… add_action De functie is gemonteerd. admin_menu Deze actie zit vast aan de haak.

In het hoofdpluginbestand, na de commentaarblok, voeg de volgende code toe:

// 在管理菜单中添加一个顶级菜单
function mfp_add_admin_menu() {
    add_menu_page(
        '我的第一个插件设置', // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',     // 权限要求
        'my-first-plugin',    // 菜单 slug
        'mfp_settings_page',  // 回调函数,用于输出页面内容
        'dashicons-admin-generic', // 图标(可选)
        6                     // 菜单位置(可选)
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 定义设置页面的回调函数
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <p>Welkom op de instellingenpagina van mijn eerste plugin!</p>
        <form method="post" action="/nl/options.php/" data-trp-original-action="options.php">
            <?php
            // 后续可以在这里添加设置字段
            ?>
            <p class="submit">
                <input type="submit" name="submit" id="submit" class="button button-primary" value="Wijzigingen opslaan">
            </p>
        <input type="hidden" name="trp-form-language" value="nl"/></form>
    </div>
    &lt;?php
}

Deze code creëert een nieuw bovenste menu-item genaamd “Mijn plugins”. Wanneer er op wordt geklikt, wordt men gebracht naar een eenvoudige instellingenpagina. Hier wordt gebruik gemaakt van… add_menu_page Er is een functie voor het registreren van een menu, en er is ook een callback-functie gedefinieerd. mfp_settings_page De inhoud van de pagina wordt weergegeven.

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

Functies uitbreiden met hooks en filters

De krachtige kern van WordPress ligt in zijn pluginarchitectuur, die voornamelijk wordt gerealiseerd door action hooks en filter hooks. Action hooks bieden je de mogelijkheid om op bepaalde momenten eigen code uit te voeren, terwijl filter hooks het mogelijk maken om gegevens te bewerken.

Gebruik action-hooks om voetnoten toe te voegen aan een pagina.

Stel dat we op alle artikelen op de website willen toevoegen dat een bepaald, aangepast tekstfragment automatisch wordt weergegeven aan het eind van de artikelen. Dit kan worden gerealiseerd door... the_content Deze filterhook wordt gebruikt om dit te realiseren. Let op: hoewel de naam “filter” is, betekent dit niet dat het echt een filter is in de strikte zin van het woord. the_content Wordt meestal gebruikt om de inhoud van een artikel te bewerken of te veranderen.

// 在文章内容末尾添加自定义文本
function mfp_append_text_to_content($content) {
    // 确保只在主循环的单篇文章页面添加
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        $custom_text = '<p><em>Deze tekst wordt u aangeboden door “Mijn eerste plugin”.</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
add_filter('the_content', 'mfp_append_text_to_content');

Deze functie mfp_append_text_to_content De oorspronkelijke inhoud van het artikel wordt ontvangen. $contentNa het controleren van de contextuele omstandigheden (om te zorgen dat het om een apart artikelpagina gaat), wordt een segment met aangepaste tekst toegevoegd aan het eind van de inhoud. Vervolgens wordt de gewijzigde inhoud teruggegeven. add_filter Registreer het bij… the_content Hook.

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%

Creëer instelbare opties voor plugins.

Een praktische plugin vereist meestal enkele opties die door de gebruiker kunnen worden ingesteld. WordPress biedt een settings-API aan om deze opties veilig te beheren. We zullen een simpel tekstveld toevoegen aan de vorige instellingenpagina.

Eerst moeten we een instelling registreren en deze toevoegen aan de bestaande menu-pagina.

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个新的设置到 “reading” 组(或自定义组)
    register_setting('mfp_plugin_settings', 'mfp_custom_message');

// 在现有页面内添加一个设置区域
    add_settings_section(
        'mfp_section_id',
        '自定义消息设置',
        'mfp_section_callback',
        'my-first-plugin'
    );

// 向该区域添加一个字段
    add_settings_field(
        'mfp_field_id',
        '页脚消息',
        'mfp_field_callback',
        'my-first-plugin',
        'mfp_section_id'
    );
}
add_action('admin_init', 'mfp_settings_init');

// 区域描述回调函数
function mfp_section_callback() {
    echo '<p>Hier kun je instellen welke bericht de plugin aan het eind van het artikel weergeeft.</p>';
}

// 字段输出回调函数
function mfp_field_callback() {
    // 从数据库中获取已保存的选项值
    $message = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
    echo '<input type="text" name="mfp_custom_message" value="' . esc_attr($message) . '" class="regular-text">';
    echo '<p class="description">Voer de boodschap in die je wilt laten zien aan het eind van elke artikel in.</p>';
}

Vervolgens moet de eerder gedefinieerde inhoud worden gewijzigd. mfp_settings_page Deze functie gebruikt de in het formulier ingevoerde waarden om de betreffende velden te weergeven.

Aanbevolen leesmateriaal Van het gemakkelijk kunnen gebruiken tot het worden van een expert: een volledig handboek en praktische training voor het ontwikkelen van WordPress-plug-ins

// 更新后的设置页面回调函数
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <form method="post" action="/nl/options.php/" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、安全随机数和设置组
            settings_fields('mfp_plugin_settings');
            do_settings_sections('my-first-plugin');
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="nl"/></form>
    </div>
    &lt;?php
}

Ten slotte wordt de functie die de tekst toevoegt aan het begin van de update geüpdat, zodat deze gebruikmaakt van instelbare opties.

function mfp_append_text_to_content($content) {
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        // 从选项中获取自定义消息,如果不存在则使用默认值
        $custom_text = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
        if (!empty($custom_text)) {
            $content .= '<p><em>'. wp_kses_post($custom_text) . '</em></p>';
        }
    }
    return $content;
}

Internationalisatie van plugins en voorbereiding op publicatie

Om ervoor te zorgen dat de plugin door gebruikers overal ter wereld gebruikt kan worden, is internationalisatie een belangrijk stuk. Dit houdt in dat alle door gebruikers zichtbare teksten worden omgevormd met behulp van tekstvelden en vertaalfuncties.

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.

Het gebruik van een vertaalfunctie om tekst te verwerken.

Je moet alle strings die worden uitgegeven in de plugin converteren... echo De tekst die wordt teruggegeven door `or` (`or `returned text`) moet worden omhuld met een specifieke vertaalfunctie. De meest gebruikelijke methode hiervoor is… () Verwend om tekst te vertalen en terug te geven, evenals... esc_html__() Dient voor het vertalen en ontsluiten van HTML.

Verwijzig het voorgaande voorbeeld van code:

// 在管理菜单中添加一个顶级菜单(国际化版本)
function mfp_add_admin_menu() {
    add_menu_page(
        __('我的第一个插件设置', 'my-first-plugin'), // 页面标题
        __('我的插件', 'my-first-plugin'),           // 菜单标题
        'manage_options',
        'my-first-plugin',
        'mfp_settings_page',
        'dashicons-admin-generic',
        6
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 区域描述回调函数(国际化版本)
function mfp_section_callback() {
    echo '<p>' . esc_html__('在这里配置插件在文章末尾显示的消息。', 'my-first-plugin') . '</p>';
}

Tegelijkertijd moet de tekstvak worden geladen. Voeg na de commentaarblok in het hoofdbestand van het plugin de code toe om de vertaalmappen te laden:

// 加载插件文本域
function mfp_load_textdomain() {
    load_plugin_textdomain('my-first-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'mfp_load_textdomain');

Prepare a plugin compression package.

Voordat je een plugin publiceert of deelt, moet je een schoon distributiepakket maken. Zorg ervoor dat je plugin-verkenning (plugin directory) alle benodigde bestanden bevat, en verwijder bestanden die niet nodig zijn. .git Onbelangrijke bestanden zoals mappen, logbestanden of IDE-configuratiebestanden mogen niet worden meegestuurd. Meestal moet een minimale plugin-pakket alleen de volgende onderdelen bevatten:
1. Hoofdplugin PHP-bestand.
2. Een optioneel element readme.txt De bestanden voldoen aan de formatstandaarden van WordPress.org en worden gebruikt om ze in de plugin-map te weergeven.
3. Een bestand dat de vertaalmaterialen bevat. /languages Mappen (indien van toepassing).
4. Andere noodzakelijke mappen met JavaScript-, CSS- of afbeeldingsbestanden.

Verpak het hele plugin-verhaal in een ZIP-bestand. Dit bestand kunt u vervolgens installeren via de “Plugins uploaden”-functie in het WordPress-administratiepaneel, of indienen in de officiële WordPress-plugin-directory.

Samenvatting

In deze handleiding hebben we de kernprocessen van het ontwikkelen van WordPress-plugins doorlopen: van het voorbereiden van de omgeving en het maken van een hoofdbestand met een standaard plugin-header, tot het toevoegen van functionaliteiten met behulp van action- en filter-hooks, het gebruiken van de settings-API om configurabele optiespagina’s te creëren, en ten slotte de basis van internationalisering. Dit vormt een solide basis voor het bouwen van complexere en praktischere plugins. Vergeet niet dat een goede codestructuur, het naleven van de WordPress-编码standaarden en een diepere begrip van het hook-systeem essentieel zijn om een uitstekende plugin-developer te worden.

Veelgestelde vragen (FAQ)

Welke programmeerkennis is vereist om een WordPress-plugin te ontwikkelen met de naam ###?

Je moet basiskennis hebben van PHP-programmering, omdat het core van WordPress en zijn plugins voornamelijk in PHP zijn geschreven. Het is ook handig om enkele basiskenningen van HTML, CSS en JavaScript te hebben, vooral wanneer je de beheerinterface of de front-end-interactie wilt aanpassen. Het is ook essentieel om de basisconcepten van WordPress te begrijpen, zoals artikelen, pagina's, categorieën en hooks.

Wat moet de naam van het hoofdbestand van de plugin zijn?

Er is geen verplichting. Het hoofdbestand mag hebben de naam van welk geldig PHP-bestand dan ook, maar het wordt meestal aanbevolen om een naam te gebruiken die overeenkomt met de naam van de plugin-map. Als de map bijvoorbeeld de naam ‘my-plugin’ heeft, zou het hoofdbestand ook ‘my-plugin.php’ kunnen heten. my-super-pluginDan kan de hoofdbestand de naam hebben… my-super-plugin.phpHet belangrijkste is de commentaar met de plugin-headinformatie aan het begin van het bestand. WordPress gebruikt deze informatie uit de commentaar. Plugin Name: Om de plugin te herkennen...

Hoe debug ik mijn plugin-code?

Er zijn verschillende manieren om plugins te debuggen. Allereerst moet je ervoor zorgen dat… wp-config.php De WordPress-debogagemode is in het bestand ingeschakeld. WP_DEBUG De constante is ingesteld op... trueDit zal PHP-fouten, waarschuwingen en berichtgeving weergeven op de pagina. Daarnaast is het ook mogelijk om… error_log() De functie schrijft de debug-informatie in het foutenlog van de server, of gebruikt een geavanceerder debug-hulpmiddel zoals het Query Monitor-plugin. Dit plugin biedt details over database-opvragen, hooks, PHP-fouten en meer.

Hoe kan ik de plugin die ik heb ontwikkeld publiceren in de officiële WordPress-directory?

Om je plugin te publiceren in de officiële WordPress.org-plugincatalogus, moet je eerst een account registreren op WordPress.org en vervolgens je plugin indienen voor review. Je plugincode moet voldoen aan de vereisten van de GNU GPL-licentie en moet een correct geformatteerde beschrijving van de plugin bevatten. readme.txt De review-team zal de kwaliteit, veiligheid van de code en de naleving van de directory-guidelines controleren. Na het slagen van de review krijgt u een SVN-repository, waarmee u de versies van uw plugin kunt beheren en updaten.