Volledig handboek voor het ontwikkelen van WordPress plugins: van het begin tot het maken van aangepaste functies

3 minuten leestijd
2026-03-17
2026-06-03
3,016
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 voornamelijk te danken aan de plugins. Door zelf plugins te ontwikkelen, kunnen ontwikkelaars alle gewenste functies toevoegen aan een website zonder de kerncode te hoeven aanpassen. Dit zorgt voor een veilige upgrademogelijkheid en de onafhankelijkheid van de functies van de website. Of het nu om het vervullen van specifieke bedrijfsbehoeften gaat, het optimaliseren van werkprocessen of het creëren van producten in de grote WordPress-ecosysteem, pluginontwikkeling is een zeer waardevolle vaardigheid.

In tegenstelling tot wanneer je de inhoud van het onderwerp rechtstreeks verandert…functions.phpTen opzichte van bestanden worden de functionaliteiten van plugins in aparte modules geïncapsuleerd. Dit betekent dat de functies die door een plugin worden aangeboden ook na het vervangen van het thema nog steeds goed werken. Bovendien kan een goed georganiseerde plugin eenvoudig worden overgebracht en opnieuw worden gebruikt op andere websites, waardoor de ontwikkelingsefficiëntie aanzienlijk wordt verbeterd.

Maak je eerste plugin

Het eerste stap in het ontwikkelen van een plugin is om de basisstructuur van een plugin te begrijpen. Alle WordPress-plugins zijn opgeslagen in een specifieke map./wp-content/plugins/In de map heeft ieder plugin zijn eigen aparte map.

Aanbevolen leesmateriaal WordPress-pluginontwikkelingsgids: van nul beginnen met het maken van je eerste plugin

Maak een hoofdbestand voor het plugin.

De kern van het plugin is een PHP-hoofdbestand. Je moet een nieuw mapje maken, bijvoorbeeld…my-first-pluginEn maak daarin een PHP-bestand met dezelfde naam als de map:my-first-plugin.phpDe commentaren in het begin van deze bestand zijn van cruciaal belang, omdat ze WordPress de meta-informatie over het plugin aanleveren.

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:       这是一个用于学习插件开发的示例插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Nadat je deze bestand hebt gesaved, kun je het vinden en activeren op de “Plugins”-pagina in het WordPress-administratiepaneel. Hoewel het nog geen enkele functionaliteit heeft, heb je met succes een legitiem plugin-framewerk gecreëerd.

Basic functionalities worden toegevoegd aan het plugin.

Nadat de plugin is geactiveerd, kunnen we ermee gaan werken en er eenvoudige functies toevoegen. Een veel voorkomend voorbeeld om mee te starten is het toevoegen van een eigen tekstregel in de voetnoot van een website. Dit kan worden gerealiseerd door gebruik te maken van...wp_footerDeze actie-haak (Action Hook) wordt gebruikt om dit te realiseren.

Voeg de volgende code toe in het hoofdbestand van het plugin:

// 在网站页脚输出自定义信息
function my_first_plugin_footer_text() {
    echo '<p style="text-align: center;">Fijn dat je gebruikmaakt van de functies die worden ondersteund door mijn eerste plugin!</p>';
}
add_action( 'wp_footer', 'my_first_plugin_footer_text' );

Hier hebben we een functie gedefinieerd.my_first_plugin_footer_text()En vervolgens gebruiken…add_action()De functie monteert dit op…wp_footerHet wordt afgespeeld op de hook. Wanneer WordPress de voetnoot (footer) van de pagina verwerkt, wordt onze functie automatisch opgeroepen, waarna de vooraf bepaalde HTML-content wordt weergegeven. Dit demonstreert de basis van het gebruik van de “hooks en callbacks”-mechanisme in WordPress.

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

De kern van het verhaal: Hookes en filters

De kernfilosofie van WordPress-pluginontwikkeling is gebaseerd op zogeheten “hooks”. Er zijn twee soorten hooks: Action Hooks en Filter Hooks. Het begrijpen van deze hooks is cruciaal voor het verschil maken tussen een eerste stap in de wereld van pluginontwikkeling en een echte expertise.

Het begrijpen van action hooks

Action hooks bieden je de mogelijkheid om je eigen code in te voegen op specifieke momenten tijdens het uitvoeren van WordPress. Net zoals in het voorbeeld hierboven.wp_footerHet wordt geactiveerd tijdens het genereren van de HTML-code in de voetnoot. Een andere veelgebruikte actie-hook is…initHet wordt uitgevoerd nadat WordPress de basislaadprocedure heeft afgerond en voordat de verzoeken worden verwerkt. Het wordt gebruikt om instellingen van plugins in te stellen of om aangepaste artikeltypes te registreren.

// 在初始化时执行一些操作
function my_plugin_init_action() {
    // 例如,在这里可以注册一个自定义文章类型
    // if ( ! post_type_exists( 'book' ) ) { ... }
}
add_action( 'init', '_plugin_init_action' );

De filterhooks beheersen

In tegenstelling tot actie-haken (action hooks) worden filter-haken gebruikt om gegevens te bewerken. Een filter-hak ontvangt een waarde, waarna deze waarde kan worden veranderd en de gewijzigde waarde vervolgens wordt teruggegeven. Een typisch voorbeeld is…the_contentEen filter biedt de mogelijkheid om de belangrijkste inhoud van een artikel of pagina te bewerken.

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%
// 在文章内容末尾自动添加一段提示文字
function my_plugin_content_filter( $content ) {
    if ( is_single() ) {
        $extra_text = '<div class="my-plugin-note">De inhoud van dit artikel is gecreëerd door mijn plugin.</div>';
        $content .= $extra_text;
    }
    return $content;
}
add_filter( 'the_content', 'my_plugin_content_filter' );

In dit voorbeeld is de function…my_plugin_content_filter()Ontvang de originele versie.$contentControleer of het een pagina met één artikel is, voeg daarna een stuk HTML toe, en retourneer uiteindelijk het gewijzigde content. WordPress zal deze retourneerde waarde gebruiken in plaats van het originele content voor de weergave.

Een configurabel plugin bouwen

Een professioneel plugin moet meestal een beheerinterface bieden, zodat gebruikers het kunnen instellen. Dit houdt in dat je instellingenpagina's moet maken in de WordPress-backoffice, formuliergegevens moet verwerken en deze op veilige manier moet opslaan.

Een beheermenu en -pagina maken

Gebruikadd_menu_page()add_options_page()De functie kan een menu-item en een instellingenpagina toevoegen aan je plugin in de achtergrond. Dit gebeurt meestal...admin_menuDe actie is voltooid in de action hook.

Aanbevolen leesmateriaal Een introductie tot het ontwikkelen van WordPress-plug-ins: van nul tot expert in het creëren van aangepaste functionaliteit.

// 添加插件管理菜单
function my_plugin_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',       // 所需权限
        'my-plugin-settings',   // 菜单slug
        'my_plugin_settings_page' // 显示页面的回调函数
    );
}
add_action( 'admin_menu', 'my_plugin_add_admin_menu' );

// 设置页面的HTML内容
function my_plugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Mijn plug-ininstellingen</h1>
        <form method="post" action="/nl/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'my_plugin_settings_group' );
            do_settings_sections( 'my-plugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="nl"/></form>
    </div>
    &lt;?php
}

Registratie-instellingen, velden en beveiligingsmaatregelen

Vervolgens moet je de WordPress Settings API gebruiken om instellingen en velden te registreren en de opslag van gegevens te verwerken. Dit zorgt voor de veiligheid van gegevensverificatie, toegangscontrole en het seriematiseerde opslaan van gegevens.

// 初始化插件设置
function my_plugin_settings_init() {
    // 注册一个新的设置项到“my_plugin_settings_group”
    register_setting( 'my_plugin_settings_group', 'my_plugin_options' );

// 在设置页面添加一个区域
    add_settings_section(
        'my_plugin_section_id',
        '基础配置',
        null,
        'my-plugin-settings'
    );

// 向该区域添加一个字段
    add_settings_field(
        'my_plugin_text_field',
        '提示文本',
        'my_plugin_text_field_render',
        'my-plugin-settings',
        'my_plugin_section_id'
    );
}
add_action( 'admin_init', 'my_plugin_settings_init' );

// 渲染文本框字段
function my_plugin_text_field_render() {
    $options = get_option( 'my_plugin_options' );
    ?&gt;
    <input type='text' name='my_plugin_options[text_field]' value='<?php echo esc_attr( $options['text_field'] ?? '' ); ?>'>
    <p class="description">De tekst die hier wordt ingevoerd, zal worden weergegeven op de frontpage van de website.</p>
    &lt;?php
}

Op deze manier worden de door de gebruiker ingetypte gegevens op de frontend eerst door WordPress verwerkt met beveiligingsmaatregelen als het oncescape-mechanisme en verificatie. Daarna worden de gegevens in de vorm van een array opgeslagen.wp_optionsIn de tabel. Je plugin-code kan worden gebruikt via…get_option( ‘my_plugin_options’ )Deze waarden moeten op veilige manier worden verkregen.

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.

Volg de beste praktijken en bereid je voor op de publicatie.

Het ontwikkelen van een kwalitatief goede, onderhoudbare en veilige plugin vereist het naleven van een reeks beste praktijken.

Codeorganisatie en veiligheid

Vertrouw nooit op de invoer van gebruikers. Verwerk alle gegevens met voorzichtigheid.$_GET$_POSTDe verkregen gegevens, of de gegevens die uit de database worden gelezen en worden voorbereid voor weergave, worden geëscapeerd of gevalideerd met functies die WordPress biedt.esc_html()esc_attr()sanitize_text_field()wp_kses()Etc. Gebruik dit.wp_enqueue_script()wp_enqueue_style()Zorg ervoor dat scripts en styles correct worden geladen, en regel de afhankelijkheden en versiebeheer. Voor complexe plugins is het verstandig om objectgerichte programming (OOP) te gebruiken om de code te organiseren: verpak je functionaliteiten in klassen, zodat de code modulairer en herbruikbaar is.

Internationalisering en lokalisering

Om je plugin beschikbaar te maken voor gebruikers overal ter wereld, is internationalisatie (i18n) essentieel. Dat betekent dat je de inhoud van je plugin moet aanpassen zodat deze in verschillende talen wordt weergegeven.__()_e()De `etc.`-functies omvatten alle strings die gericht zijn naar de gebruiker. Ze zijn gedefinieerd in de commentaren bovenin het plugin.Text Domain(zoals)my-first-pluginDeze tekst moet overeenkomen met de tekstvakken die hier worden gebruikt.

// 错误示例
echo “Settings Saved”;

// 正确示例
echo esc_html__( 'Settings Saved', 'my-first-plugin' );

Vervolgens kun je tools gebruiken zoals Poedit om deze strings te extraheren en te verwerken..potTemplatebestanden: De vertaler kan erop baseren om content te creëren in verschillende talen.zh_CN.poHet vertaalde document van (een deel van) de tekst. Deze tekst is afkomstig van een website met de naam 'Gearbest'..moDe gecompileerde bestanden zijn opgeslagen in de map met plugins./languages/In de map worden de vertalingen automatisch door WordPress geladen, afhankelijk van de taal van de website.

Ver klaar om te worden gepubliceerd in de officiële catalogus.

Als je van plan bent je plugin in te dienen bij het officiële WordPress.org-pluginverzeichnis, moet je ervoor zorgen dat je code voldoet aan de vereisten. Dit betekent onder andere dat je een uitgebreide documentatie moet maken.readme.txtDe bestanden beschrijven het plugin in een specifiek format, bevatten screenshots, instructies voor het installeren, vragen en antwoordjes (FAQ) en logboeken van updates. Ze worden verspreid onder de GPL-licentie en de code wordt ingediend via het officiële Subversion (SVN)-repository. Vooraf moet je de compatibiliteit van je plugin met verschillende versies van WordPress, PHP, populaire thema's en andere plugins grondig testen.

Samenvatting

Het ontwikkelen van WordPress-plug-ins is een geleidelijk proces dat van het opsluiten van simpele functies tot het bouwen van complexe toepassingen gaat. Het begint met een PHP-bestand dat de juiste header-commentaren bevat, waarbij het belangrijk is om handig om te gaan met action-hooks en filter-hooks om te kunnen interacteren met het kernbestand van WordPress. Het maken van een backend-beheerinterface met de Settings API maakt het gebruik van de plug-in eenvoudiger voor de gebruiker. Het naleven van veiligheidsbest practices, het realiseren van internationalisatie en een goede organisatie van het codebestand vormen de basis voor het ontwikkelen van professionele plug-ins. Of je nu de behoeften van een persoonlijk project wilt vervullen of wilt bijdragen aan de open-source-gemeenschap: het beheersen van deze ontwikkelingsprocesen opent de deur naar grote mogelijkheden voor personalisatie.

Veelgestelde vragen (FAQ)

Welke voorwaartse kennis is vereist om plugins te ontwikkelen?

Je moet basiskennis hebben van PHP-programmering, moet op de hoogte zijn van HTML en CSS, en enige kennis hebben van de basisfuncties en concepten van WordPress (zoals artikelen, pagina's en plugins). Het is handig om ook vertrouwd te zijn met de basisconcepten van de MySQL-database, maar dit is niet vereist, aangezien WordPress handige databasefuncties biedt.WP_Querywpdb(Klasse)

Wat is het verschil tussen de functions.php-bestanden van plugins en thema's?

Plaats de code in het thema.functions.phpIn de bestanden wordt een methode beschreven om snel nieuwe functies te toevoegen, maar deze functies zijn gebonden aan een bepaald thema. Als je het thema vervangt, worden deze functies ook weggegaan. Plugins daarentegen zijn onafhankelijke modules die onafhankelijk van het gebruikte thema werken; zodra een plugin is geactiveerd, zijn de functies beschikbaar. Voor functies die op de lange termijn worden gebruikt of die op meerdere websites moeten worden toegepast, is het beter om ze als plugin te ontwikkelen.

Hoe debug ik mijn plugin-code?

WordPress biedt verschillende hulpmiddelen voor het opsporen en oplossen van problemen (debugging tools). Allereerst kun je…wp-config.phpHet bestand is geopend inWP_DEBUGPatronen, ga verder.define( 'WP_DEBUG', true );Dit zorgt ervoor dat PHP-fouten, waarschuwingen en berichtgeving op het scherm worden weergegeven. Een veiliger manier is om dit allemaal tegelijkertijd in te stellen.WP_DEBUG_LOGtrueLog de fouten in.../wp-content/debug.logIn het bestand. Daarnaast wordt…error_log()Door functies te gebruiken of professionele debugging-plugins zoals Query Monitor te installeren, is het mogelijk om variabelen en database-opvragen efficiënter te volgen.

Hoe kan mijn plugin worden geïntegreerd met hogere versies van PHP?

Om te zorgen dat je plugin ook in toekomstige versies van PHP goed werkt, moet je vermijden om afgekeurde of verwijderde functies en syntaxen te gebruiken. Test je plugin in een lokale ontwikkelomgeving die overeenkomt met het gewenste doelversie (bijvoorbeeld PHP 8.x). Houd je op de hoogte van de officiële updateberichten van WordPress en PHP, en vermeld in het updatelog van je plugin welke PHP-versies worden ondersteund. Dit helpt gebruikers bij het maken van een goede keuze voor hun ontwikkelomgeving.