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

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

Forbereiden van de ontwikkelingsomgeving voor WordPress plugins

Voordat je met het schrijven van code begint, is een geschikte ontwikkelomgeving van belang. Dit zorgt niet alleen voor een efficiënte werkwijze, maar simulieert ook de echte productieomgeving, waardoor problemen met onovereenkomsten tussen de lokale en online omgeving kunnen worden voorkomen. Een typische ontwikkelomgeving moet een lokale serveromgeving, een code-editor en debugging-hulpmiddelen omvatten.

Allereerst hebt u een lokale serveromgeving nodig waarop WordPress kan worden uitgevoerd. Het wordt aanbevolen om gebruik te maken van een geïntegreerde omgevingspakket, zoals Laragon, XAMPP of Local by Flywheel. Met deze tools kunnen Apache/Nginx, PHP en MySQL in één stap worden geïnstalleerd, waardoor u zich geen zorgen meer hoeft te maken om de configuratie. Zorg ervoor dat uw PHP-versie compatibel is met de huidige versie van WordPress; in principe wordt PHP 7.4 of een hogere versie aanbevolen. Bovendien moet u in het WordPress-beheerpaneel (“Tools” → “Site Health”) controleren of er geen belangrijke problemen zijn die de ontwikkeling van plugins belemmeren.

Ten tweede: kies een krachtige code-editor. Visual Studio Code is een zeer populaire optie; het is lichtgewicht, gratis en beschikt over veel extensies, zoals PHP Intelephense (voor intelligente code提示) en WordPress Snippet (voor codefragmenten). Een andere klassieke keuze is PhpStorm, maar dit is een betaalde software die een dieper geïntegreerde ondersteuning voor WordPress biedt.

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

Ten slotte is het inschakelen van de debug-modus een essentieel stap in het ontwikkelingsproces. Dit kan worden gedaan door te bewerken de bestanden in de root-map van WordPress.wp-config.phpJe kunt een uitgebreide foutrapportage activeren voor de bestanden; dit is van essentieel belang om problemen in het codepatroon op te sporen en te kunnen verhelpen. Zo vind je eenvoudig de definities die in de bestanden zijn opgeslagen.WP_DEBUGOp de plek waar de constante staat, kun je de volgende code toevoegen:

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.
// 启用 WordPress 调试模式
define( 'WP_DEBUG', true );
// 将错误记录到 /wp-content/debug.log 文件
define( 'WP_DEBUG_LOG', true );
// 在页面上显示错误(开发环境推荐,生产环境必须关闭)
define( 'WP_DEBUG_DISPLAY', true );

Maak je eerste pluginbestand.

Een WordPress-plugin kan zo simpel zijn dat het maar uit één bestand bestaat. Alle plugins moeten worden opgeslagen in een specifieke map in het WordPress-installatiepad./wp-content/plugins/In de map kunnen er submappen voor elke plugin worden gemaakt. Dit helpt bij het organiseren van een complexere codestructuur.

Het commentaar aan het begin van de plug-in.

Elk hoofdbestand van een plug-in moet beginnen met gestandaardiseerde PHP-kopcommentaren. Op deze manier herkent WordPress de informatie van de plug-in. Maak een nieuw bestand en geef het de naammy-first-plugin.phpEn plaats het erin./wp-content/plugins/my-first-plugin/In de map vind je de volgende bestanden:

<?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 bevat alle meta-informatie over het plugin die wordt weergegeven op de “Plugins”-pagina in het WordPress-administratiecentrum.Text DomainDomain PathVoor de voorbereiding op de internationalisering (i18n) van plugins.

Een eenvoudige functie implementeren

Laten we nu een eenvoudige functie toevoegen aan deze plugin: automatisch een regel met aangepast tekst toevoegen aan het eind van de artikelinhoud. Hiervoor gaan we gebruikmaken van WordPress.the_contentFilter-haken. Die hebt u net gecreëerd.my-first-plugin.phpUnder de commentaren in het begin van het bestand, voeg de volgende functie toe:

Aanbevolen leesmateriaal WordPress-pluginontwikkeling beheersen: van nul tot een zelfgemaakte functie bouwen

// 在文章内容末尾添加自定义文本
function my_first_plugin_add_footer_text( $content ) {
    // 确保只在主循环的单篇文章页面执行
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $footer_text = '<p><em>Fijn dat je het hebt gelezen! Dit artikel wordt u aangeboden door “Mijn eerste plugin”.</em></p>';
        $content .= $footer_text;
    }
    return $content;
}
add_filter( 'the_content', 'my_first_plugin_add_footer_text' );

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”. Activeer deze plugin, en blader vervolgens door een blogartikel. Je ziet dat de tekst die we hebben ingesteld succesvol is toegevoegd aan de onderste helft van de artikelen.

Het gebruik van de WordPress-core-API

Tijdens het uitgebreide ontwikkelen werkt je vaak met de verschillende API's die WordPress biedt. Het meest centrale onderdeel hiervan is het systeem voor “hooks”, waaronder “actions” en “filters”.

Het begrijpen van action hooks

Action hooks bieden je de mogelijkheid om op specifieke tijdstippen eigen code uit te voeren. Denk bijvoorbeeld aan het sturen van een e-mailnotificatie wanneer een artikel wordt gepubliceerd.publish_postActies. Het volgende voorbeeld toont hoe je een functie kunt maken die informatie registreert in het foutenlogboek wanneer een artikel wordt gepubliceerd:

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_first_plugin_log_post_published( $post_id, $post ) {
    // 避免无限循环和非文章类型
    if ( wp_is_post_revision( $post_id ) || $post->post_type != ‘post’ ) {
        return;
    }
    // 记录日志
    error_log( “文章 ID {$post_id} 已发布,标题为:{$post->post_title}” );
}
// 将函数挂载到 publish_post 动作钩子上
add_action( ‘publish_post’, ‘my_first_plugin_log_post_published’, 10, 2 );

functieadd_actionDe derde parameter is de prioriteit (standaardwaarde: 10); hoe lager het getal, des hoger de prioriteit. De vierde parameter is het aantal argumenten dat de functie accepteert.

Het begrijpen van filterhooks

De filter-haken worden gebruikt om gegevens te bewerken. In het hoofdstuk “Maak je eerste plugin-bestand” hebben we ze gebruikt.the_contentHet is een soort filter-hook. Het ontvangt het originele content en biedt de mogelijkheid om dit te bewerken voordat het wordt teruggegeven. Een ander veelgebruikt voorbeeld is het aanpassen van de lengte van de samenvatting van een artikel.

// 修改摘要的默认字数
function my_first_plugin_custom_excerpt_length( $length ) {
    return 30; // 将摘要字数改为30字
}
add_filter( ‘excerpt_length’, ‘my_first_plugin_custom_excerpt_length’ );

Voeg een entreemenu toe.

Om met gebruikers te kunnen interacteren, moeten we meestal een menu-pagina toevoegen aan de beheerzijbalk in het WordPress-administratiepaneel. Dit kan worden gedaan door...add_menu_pageFunction implementatie: De onderstaande code voegt een hoofdinstellingenpagina toe aan het plugin.

Aanbevolen leesmateriaal Volledig handboek voor het ontwikkelen van WordPress plugins: van nul tot een hoogkwalitatieve uitbreiding voor WordPress

// 创建插件管理菜单
function my_first_plugin_add_admin_menu() {
    add_menu_page(
        ‘我的第一个插件设置’, // 页面标题
        ‘我的插件’,           // 菜单标题
        ‘manage_options’,     // 所需权限
        ‘my-first-plugin’,    // 菜单slug
        ‘my_first_plugin_settings_page’, // 回调函数,用于输出页面内容
        ‘dashicons-admin-plugins’, // 图标(可选)
        100                    // 菜单位置(可选)
    );
}
add_action( ‘admin_menu’, ‘my_first_plugin_add_admin_menu’ );

// 设置页面的回调函数
function my_first_plugin_settings_page() {
    ?&gt;
    <div class="“wrap”">
        <h1>Mijn eerste plugin-instellingen</h1>
        <p>Dit is de instellingenpagina voor de plugin. In de toekomst kun je hier formulieren en opties toevoegen.</p>
    </div>
    &lt;?php
}

Sicherheid van plugins en beste praktijken

Wanneer je plugins ontwikkelt voor anderen te gebruiken, mogen de veiligheid en de kwaliteit van het code niet worden veronachtigd. Het naleven van beste praktijken kan de website beschermen tegen aanvallen en zorgt ervoor dat de plugins compatibel en gemakkelijk te onderhouden zijn.

Datavalidatie en escape

Vertrouw nooit op de invoer van gebruikers of op gegevens uit de database. Voorafgaand aan het weergeven in de browser moet de invoer worden geëscapiseerd; voorafgaand aan het opslaan in de database moet de invoer worden gevalideerd en gereinigd. WordPress biedt tal van hulpprogramma’s (helpers) voor dit doel.

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.
  • Escape output: Useesc_html()esc_attr()esc_url()wp_kses_post()Functies als deze ontsluiten gegevens afhankelijk van de context.
  • Verificatie van invoer: gebruikensanitize_text_field()sanitize_email()intval()Functies zoals deze worden gebruikt om de door de gebruiker ingediende formuliergegevens te verwerken en te reinigen.

Als je bijvoorbeeld de instellingen van een pagina bepaalt om formuliergegevens te verwerken:

$user_input = $_POST[‘some_field’] ?? ‘’; // 使用空合并运算符提供默认值
$clean_input = sanitize_text_field( $user_input ); // 清理数据
update_option( ‘my_plugin_option’, $clean_input ); // 安全存储

Het gebruik van niet-CE-middelen en het uitvoeren van toegangscontroles

Tijdens het verwerken van formulierverzoeken (met name die vanuit admin-ajax.php of admin-post.php komen), moet ervoor worden gezorgd dat…wp_verify_nonce()Om de legitiemheid van de verzoeken te controleren en aanvallen met cross-site request forgery (CSRF) te voorkomen, wordt dit gebruikt.current_user_can()Controleer of de huidige gebruiker de vereiste toegang heeft om de betreffende actie uit te voeren.

function my_first_plugin_handle_form_submit() {
    // 1. 检查nonce
    if ( ! isset( $_POST[‘my_nonce_field’] ) || ! wp_verify_nonce( $_POST[‘my_nonce_field’], ‘my_action’ ) ) {
        wp_die( ‘安全校验失败!’ );
    }
    // 2. 检查权限
    if ( ! current_user_can( ‘manage_options’ ) ) {
        wp_die( ‘权限不足!’ );
    }
    // 3. 安全地处理数据…
}

Codeorganisatie en internationalisatie

Voor complexe plugins is het aan te raden om objectgerichte programming (OOP) te gebruiken om de code te organiseren en de functionaliteiten te modulariseren in klassen. Dit verbetert de leesbaarheid en herbruikbaarheid van de code.

Tegelijkertijd moet vanaf het begin rekening worden gehouden met de internationale versie van het plugin. Dit betekent dat alle teksten die worden gebruikt door de gebruiker moeten worden vertaald met de vertaalfuncties van WordPress.__()_e()Verpakken. Door de commentaren in het hoofddeel van het plugin te bekijken, hebben we al de benodigde instellingen gedefinieerd.Text DomainIn het code moet dit op de volgende manier worden gebruikt:

$message = __( ‘感谢阅读!本文由“我的第一个插件”为您呈现。’, ‘my-first-plugin’ );

Daarna kunt u gebruikmaken van tools als Poedit om dit te realiseren..potTemplatebestanden, bedoeld om vertalers te helpen verschillende talen te genereren..moHet document.

Samenvatting

Met deze gids hebt u de basislagen van het maken van een WordPress-plugin vanuit het niets onder de knie gekregen. U hebt geleerd hoe u een ontwikkelingsomgeving opzet, een pluginbestand met standaardheadercommentaren maakt, en hoe u gebruikmaakt van de krachtige systeemontwikkelingsmogelijkheden van WordPress, zoals acties (actions) en filters (filters), om nieuwe functies toe te voegen. We hebben ook besproken hoe u veilig een beheermenu kunt toevoegen, gegevens kunt verwerken, en de belangrijkheid van veiligheid en internationalisering benadrukt. Het ontwikkelen van plugins is een proces van voortdurend leren en oefenen; het belangrijkste is om de werking van het WordPress-haak-systeem (hook system) en de veiligheidsregels te begrijpen. Nu kunt u proberen om complexere functies te ontwikkelen, zoals het maken van aangepaste database-tabelen, het toevoegen van shortcodes, widgets of REST API-ëndpunten, en zo steeds meer functionele en sterke commerciële plugins bouwen.

Veelgestelde vragen (FAQ)

Moet een plugin in een aparte map worden opgeslagen?

Nee, een plugin kan best alleen maar een afzonderlijke component zijn..phpDe bestanden kunnen rechtstreeks worden geplaatst./wp-content/plugins/De bestanden zijn te vinden in de map. Het is echter sterk aan te raden om voor plugins die meerdere bestanden of bronnen (zoals JS- en CSS-bestanden) bevatten, of voor bestanden die moeten worden vertaald, een aparte map te gebruiken om alle relevante bestanden op te slaan. Dit maakt de structuur van het project duidelijker en gemakkelijker te beheren.

Hoe kan ik zorgen dat de instellingen van mijn plugin worden opgeslagen in de database?

WordPress biedt een zeer handige Options API aan. Je kunt deze gebruiken om verschillende instellingen en configuraties in WordPress te bepalen en te bewerken.add_option()get_option()update_option()Er zijn functies beschikbaar om plugin-instellingen te toevoegen, op te halen en te updaten. De gegevens worden veilig opgeslagen in WordPress.wp_optionsIn de database-tabel. Voor een groot aantal gestructureerde gegevens kan worden overwogen om deze te serialiseren naar een array of een JSON-string en deze vervolgens op te slaan.

Kunnen de plugins die ik ontwikkeld heb met andere plugins in conflict raken?

Dat is mogelijk, vooral wanneer de plugin gebruikmaakt van algemene hangijzers (hooks), functionnamen of klassenamen. Om conflicten te voorkomen is het beste om alle functies, klassen en variabelen een unieke prefix te geven (bijvoorbeeld een afkorting of de naam van de plugin), de plugin-slug te gebruiken als namensruimte (dit is mogelijk in PHP 5.3 en later), en bij het gebruiken van hangijzers de juiste prioriteit te kiezen om de uitvoeringsvolgorde te bewaren zoals verwacht.

Welke versies van WordPress moet het plugin compatibel zijn met?

Dat hangt af van je doelgroep. Meestal wordt het aanbevolen om compatibel te zijn met de huidige belangrijkste versie en één of twee eerdere versies. Je kunt dit instellen in het plugin...readme.txtDe inhoud van het bestand is verwerkt/gelezen.Requires at least:Vul het veld in om de minimale vereiste versie van WordPress aan te geven. Tijdens het ontwikkelingsproces moet worden vermeden om functies te gebruiken die alleen beschikbaar zijn in een nieuwere versie van WordPress.function_exists()De compatibiliteit moet worden gecontroleerd om het toepassingsgebied van de plugin uit te breiden.