Van nul naar honderd: de ultieme handleiding en praktische tutorial voor het ontwikkelen van WordPress-plug-ins.

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

De kernconcepten van het ontwikkelen van WordPress-plug-ins

Voordat je diep in de code duikt, is het van belang om de basisprincipes van WordPress plugins te begrijpen. Een WordPress plugin is in feite een PHP-script of een groep scripts die de kernfuncties van WordPress uitbreiden of aanpassen via het standaard WordPress-hook-systeem. Het belangrijkste aspect van een plugin is dat het naadloos integreert met de werking van WordPress, zonder dat de kernbestanden rechtstreeks hoeven te worden gewijzigd.

Een kernbestand is een PHP-bestand met specifieke koptekstnotities. Deze koptekst wordt gebruikt door WordPress om een plug-in te herkennen. Een voorbeeld hiervan is het basisbestand van een plug-in. my-first-plugin.php De opening moet de volgende informatie bevatten:

<?php
/**
 * Plugin Name: 我的第一个插件
 * Description: 这是一个用于演示的简单WordPress插件。
 * Version: 1.0.0
 * Author: 你的名字
 */

Zodra deze bestand is geplaatst... /wp-content/plugins/ In de map wordt het door het “Plugins”-scherm in de WordPress-beheeromgeving herkend en wordt het daar opgeslagen.

Aanbevolen leesmateriaal De ultieme gids voor het ontwikkelen van WordPress-thema's: van nul tot een professioneel website-thema.

De werking van plugins is gebaseerd op twee kernconcepten: Action Hooks en Filter Hooks. Action Hooks bieden je de mogelijkheid om je eigen code op bepaalde momenten tijdens het uitvoeren van WordPress in te voegen, bijvoorbeeld nadat een artikel is gepubliceerd of voordat de stylesheets in de paginahead worden geladen. Hier worden functies gebruikt voor deze acties. add_action() Je kunt je functies “maken dat ze worden gebruikt in deze ”haken’ (hooks). De filterhaken bieden de mogelijkheid om gegevens te bewerken voordat ze worden gebruikt of opgeslagen in de database, bijvoorbeeld om de inhoud, de titel of een samenvatting van een artikel te veranderen. Dit wordt gerealiseerd door… add_filter() De implementatie van functies is belangrijk. Het begrijpen en vloeiend gebruiken van het hook-systeem is een cruciaal stap om van een WordPress-gebruiker naar een ontwikkelaar te worden.

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 functionaliteitsplugin.

Laten we beginnen met een praktisch en nuttig voorbeeld: het maken van een klein plugin dat automatisch een auteursverklaring toevoegt aan de onderkant van een websiteartikel. De procedure omvat het maken van de plugin, het gebruiken van filterhooks en het instellen van de basisopties van de plugin.

Allereerst: in je lokale of testomgeving… /wp-content/plugins/ Maak een nieuwe map in de map en geef deze de naam my-copyright-noticeIn deze map moet je een hoofdplugin-bestand maken. my-copyright-notice.phpEn schrijf de volgende code op:

&lt;?php
/**
 * Plugin Name: 文章版权声明
 * Description: 自动在文章内容末尾附加自定义版权声明。
 * Version: 1.0.0
 * Author: 开发者
 */

// 防止直接访问
if ( ! defined( &#039;ABSPATH&#039; ) ) {
    exit;
}

/**
 * 在文章内容后追加版权声明
 */
function mycn_add_copyright_to_content( $content ) {
    // 确保只在主循环的单篇文章中显示
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $site_url = get_site_url();
        $current_year = date( &#039;Y&#039; );
        // 构建版权文本,这里用 2026 作为示例,实际开发可动态获取
        $copyright_text = sprintf(
            &#039;<p><em>© 2026 %s. Dit artikel is gemaakt door <strong>%s</strong> Oorspronkelijk gemaakt; verwijs altijd naar de bron wanneer je het herpubliceert.</em></p>',
            esc_html( get_bloginfo( 'name' ) ),
            esc_url( $site_url )
        );
        $content .= $copyright_text;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'mycn_add_copyright_to_content' );

Deze plugin demonstreert de basisfuncties van filters.mycn_add_copyright_to_content De functie ontvangt de inhoud van het artikel. $contentDoor gebruik te maken van conditionele beoordelingen wordt ervoor gezorgd dat de auteursrechtnotitie alleen op de pagina van een enkele artikel wordt weergegeven en alleen in de hoofdquery wordt toegevoegd. Vervolgens wordt de inhoud gewijzigd en teruggegeven.add_filter( ‘the_content’, ‘mycn_add_copyright_to_content’ ) Deze code zorgt voor de toevoeging (‘injection’) van de gewenste functionaliteit.

Een managementinterface en opties toevoegen aan een plugin

Een volwassen plugin moet meestal de mogelijkheid bieden voor gebruikers om het te configureren. Dit wordt gerealiseerd door een optiepagina te creeren in de WordPress-beheeromgeving. We zullen voor het bovengenoemde copyright-plugin een instellingenpagina toevoegen, zodat gebruikers de copyright tekst kunnen aanpassen.

Aanbevolen leesmateriaal Hoe je een uniek en visueel opvallend WordPress-thema kunt aanpassen om aan professionele eisen te voldoen.

Allereerst moeten we een functie maken om een menu-item voor instellingen te registreren. Dit gebeurt meestal wanneer de administrator de systeeminstellingen initialiseert.

Modifice je… my-copyright-notice.php Voor het bestand: voeg de volgende code toe:

// 添加管理员菜单
function mycn_add_admin_menu() {
    add_options_page(
        '版权声明设置', // 页面标题
        '文章版权',     // 菜单标题
        'manage_options', // 权限
        'my_copyright_notice', // 菜单slug
        'mycn_settings_page_html' // 回调函数,用于输出页面HTML
    );
}
add_action( 'admin_menu', 'mycn_add_admin_menu' );

// 初始化插件的设置
function mycn_settings_init() {
    // 注册一个新的设置项到 ‘mycn_settings’ 组
    register_setting( ‘mycn_settings’, ‘mycn_copyright_text’ );

// 在 ‘mycn_settings’ 组内添加一个设置区块
    add_settings_section(
        ‘mycn_settings_section’,
        ‘自定义版权文本’,
        null, // 可选的区块描述回调函数
        ‘mycn_settings’
    );

// 向区块中添加字段
    add_settings_field(
        ‘mycn_copyright_field’,
        ‘版权声明’,
        ‘mycn_copyright_field_html’,
        ‘mycn_settings’,
        ‘mycn_settings_section’
    );
}
add_action( ‘admin_init’, ‘mycn_settings_init’ );

// 设置字段的HTML输出
function mycn_copyright_field_html() {
    $option = get_option( ‘mycn_copyright_text’, ‘© 2026 [site_name]. 本文原创自 [site_url]。’ );
    ?&gt;
    <textarea name="‘mycn_copyright_text’" rows="‘5’" cols="‘50’"><?php echo esc_textarea( $option ); ?></textarea>
    <p class="“description”">Sleutelwoorden worden ondersteund, zoals: [site_name] (naam van de website) en [site_url] (adres van de website).</p>
    <?php
}

// 设置页面的HTML结构
function mycn_settings_page_html() {
    // 检查用户权限
    if ( ! current_user_can( ‘manage_options’ ) ) {
        return;
    }
    ?>
    <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_fields( ‘mycn_settings’ );
            do_settings_sections( ‘mycn_settings’ );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="nl"/></form>
    </div>
    &lt;?php
}

Volgens de opgave moeten we de eerdere versie nu wijzigen. mycn_add_copyright_to_content Een functie die gebruikmaakt van de door de gebruiker opgeslagen instellingen en de daarin opgenomen kortcodes vervangt.

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 mycn_add_copyright_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $text = get_option( ‘mycn_copyright_text’, ‘© 2026 [site_name]. 本文原创自 [site_url]。’ );
        $text = str_replace(
            array( ‘[site_name]’, ‘[site_url]’ ),
            array( esc_html( get_bloginfo( ‘name’ ) ), esc_url( get_site_url() ) ),
            $text
        );
        $content .= ‘<p><em>’ . wp_kses_post( $text ) . ‘</em></p>’;
    }
    return $content;
}

Nu kunnen gebruikers in het WordPress-beheerpaneel, onder het menu “Instellingen”, het submenu “Artikelrechten” zien en de tekst van de verklaring zelf aanpassen.

Beste praktijken voor de beveiliging, afstelling en internationalisatie van plugins

Om een plugin te ontwikkelen die door anderen kan worden gebruikt, moet je rekening houden met veiligheid, stabiliteit en onderhoudbaarheid. Hier zijn enkele belangrijke best practices:

Veiligheid: vertrouw nooit op invoer van gebruikers. Alle gegevens van gebruikers, databases of externe API's moeten op de juiste manier worden geëscape of opgeschoond voordat ze op het scherm worden weergegeven, in de database worden ingevoerd of voor bestandsbewerking worden gebruikt. WordPress biedt uitgebreide beveiligingsfuncties, zoals het gebruik van HTML. esc_html()Gebruik dit voor URL's. esc_url()Voor het gebruik van HTML-attributen: esc_attr()Wanneer het nodig is om bepaalde veilige HTML-tags toegestaan te krijgen, moet dit worden gedaan op een veilige manier. wp_kses_post()wp_kses()Voor het begin van het plugin moet u zeker gebruikmaken van... if ( ! defined( ‘ABSPATH’ ) ) exit; Dit is om te voorkomen dat de bestanden rechtstreeks worden bereikt.

Aanbevolen leesmateriaal Een volledige gids voor het ontwikkelen van WordPress-plug-ins: van nul tot praktische implementatie.

Foutopsporing: Tijdens het ontwikkelingsproces wordt dit actief gesteld. WP_DEBUG Constanten zijn van cruciaal belang. In jouw... wp-config.php De instellingen zijn gedaan in het bestand. define( ‘WP_DEBUG’, true);Dit zorgt ervoor dat alle PHP-fouten, waarschuwingen en berichtgeving op het scherm worden weergegeven (enkel in de ontwikkelingsomgeving). Tevens wordt dit gecombineerd met andere functies. error_log() Functies of debugging plugins zoals Query Monitor kunnen je enorm helpen bij het bijhouden van variabelen en SQL-verzoeken.

Vertaalmogelijkheden voor internationalisering (i18n): Om je plugin beschikbaar te maken voor gebruikers overal ter wereld, moeten alle teksten die worden getoond aan de gebruiker worden voorbereid op vertaling. Dit betekent dat je geen hardgecodeerde tekst in het Chinees of Engels gebruikt, maar de vertaalfuncties van WordPress inzet.

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.

Als voorbeeld: verander je de eerder genoemde informatie over de plugin als volgt:

/**
 * Plugin Name: 文章版权声明
 * Description: 自动在文章内容末尾附加自定义版权声明。
 * Version: 1.0.0
 * Author: 开发者
 * Text Domain: my-copyright-notice
 */

In de code moet de te vertalen tekst worden gemarkeerd met speciale tekens of tags. __( ‘string’, ‘text-domain’ )_e( ‘string’, ‘text-domain’ ) Function wrapping. Voorbeeld: in het instellen van paginafuncties:

function mycn_settings_page_html() {
    if ( ! current_user_can( ‘manage_options’ ) ) {
        return;
    }
    ?&gt;
    <div class="“wrap”">
        <h1><?php echo esc_html( __( ‘版权声明设置’, ‘my-copyright-notice’ ) ); ?></h1>
        ...
    </div>
    &lt;?php
}

Vervolgens kun je gebruikmaken van een tool als Poedit om deze strings te extraheren en te verwerken. .pot Templatebestanden, bedoeld voor vertalers om mee te werken .po/.mo Taalbestand.

Samenvatting

Het ontwikkelen van WordPress-plug-ins is een proces waarbij je creativiteit omtovert in functionaliteiten die diep worden geïntegreerd in het populairste content management-systeem ter wereld. Je kunt snel starten door de kernmechanismen van hooks te begrijpen en eenvoudige functionaliteiten te ontwikkelen in de vorm van plug-ins. Het creëren van een beheerinterface en instellingen voor je plug-in verhoogt de professionaliteit en bruikbaarheid ervan. Het naleven van beste praktijken op het gebied van veiligheid, af te stemmen en internationaal gebruik (internationalization) is essentieel om ervoor te zorgen dat je plug-in stabiel, veilig is en gemakkelijk kan worden verspreid. Vergeet niet dat de beste manier om te leren is door te praktiseren: ga van een echte behoef uit en bouw je plug-in steeds verder op en verbeter het.

Veelgestelde vragen (FAQ)

Welke basiskennis is vereist voor het ontwikkelen van WordPress-plug-ins?

Je moet een goede kennis van PHP-programmering hebben, aangezien de plugins voornamelijk in PHP zijn geschreven. Daarnaast is een basiskennis van HTML, CSS en JavaScript vereist voor het creeren van de front-end-uitstelling en het beheersen van interfaces. Het is essentieel om de basisarchitectuur van WordPress te begrijpen, zoals thema's, artikeltypen, categorieën, en vooral het systeem van action hooks en filter hooks.

Hoe begin je met het oplossen van problemen met een niet werkende plugin?

Allereerst, in jouw... wp-config.php De optie 'In de file activeren' is geactiveerd. WP_DEBUGWP_DEBUG_LOGDit zal de foutmeldingen opslaan in een logbestand in plaats van ze te weergeven aan de bezoekers. Daarnaast moet je ervoor zorgen dat je plugin is geactiveerd. Controleer de syntaxis van je code en stel je ervoor dat alle functionnamen, hooknamen en bestandspaden correct zijn. var_dump()error_log() De waarden van de belangrijkste variabelen kunnen worden uitgevoerd, of een professioneel WordPress-debogingsplugin (zoals Query Monitor) worden geïnstalleerd om hulp te krijgen bij het opsporen van problemen.

Welke map moet mijn plugin worden opgeslagen?

Je plugin moet worden geplaatst in het installatieverwijfingspad van WordPress. /wp-content/plugins/ Binnen de map. Je kunt direct een PHP-bestand maken in deze map (geschikt voor minimalistische plugins), maar het is een sterkere benadering om een aparte map te maken voor je plugin, en de hoofdfile en andere resource-bestanden (zoals JS, CSS, afbeeldingen) in deze map op te slaan. De namen van de map en de hoofdPHP-file moeten uniek zijn, om conflicten met andere plugins te voorkomen.

Hoe stuur ik mijn plugin op naar de officiële WordPress-plugincatalogus?

Allereerst moet je een account registreren op WordPress.org en je plugin indienen. De code van je plugin moet voldoen aan de officiële codevereisten en -standaarden, waaronder veiligheid, het ontbreken van schadelijk code, en het aanwezig zijn van adequate bestandskopijen met commentaren. Je moet ook een geldig... readme.txt De bestand is in een formaat dat voldoet aan de officiële vereisten. Na het indienen wordt het door een team van plug-in-beoordelaars manueel gecontroleerd; dit kan enkele weken duren. Als de controle is geslaagd, kan je plug-in worden gevonden en geïnstalleerd door gebruikers overal ter wereld.