Volledige gids voor het ontwikkelen van WordPress plugins: bouw je eerste plugin van scratch

3 minuten leestijd
2026-03-15
2026-06-03
2,105
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 het van belang om een stabiele en efficiënte lokale ontwikkelingsomgeving op te zetten. Dit zorgt niet alleen voor veilige testen, maar imiteert ook de werking van een echte server. Voor het ontwikkelen van WordPress-plug-ins raden we sterk aan om gebruik te maken van lokale serversoftware zoals XAMPP, MAMP of Local by Flywheel. Met deze tools kun je eenvoudig een omgeving op je computer opzetten waarin Apache, PHP en MySQL zijn geïnstalleerd.

Volgens de beschrijving hebt u eerst een code-editor nodig. Visual Studio Code, PhpStorm of Sublime Text zijn allemaal uitstekende keuzen; ze bieden ondersteuning voor syntaxhighlighting, codevoorstellen en mogelijkheden voor het oplossen van fouten (debugging), waardoor u uw ontwikkelingswerkzaamheden veel efficiënter kunt uitvoeren. Installeer en configureer deze tools eerst. Daarna kunt u de meest recente versie van de WordPress-corebestanden downloaden en deze op uw lokale server installeren.

Daarnaast wordt het aanbevolen om in de wortelmap van je plugin-project een versiebeheerssysteem in te stellen, bijvoorbeeld Git.git initDeze opdracht maakt een nieuw repository aan, waardoor je codeveranderingen kunt bijhouden, fouten kunt herstellen en samen met het team kunt werken. Overweeg ook om de debug-modus van WordPress in te schakelen.wp-config.phpDe bestand zal...WP_DEBUGDe constante is ingesteld op...trueDit zorgt ervoor dat PHP-fouten en waarschuwingen tijdens het ontwikkelingsproces worden weergegeven, waardoor je snel kunt bepalen waar het probleem zit.

Aanbevolen leesmateriaal De volledige gids voor het ontwikkelen van WordPress-plug-ins: van nul tot één, hoe je je eigen plug-in maakt.

Maak de basisstructuur van je eerste plugin.

Een standaard WordPress-plugin beschikt over een bepaalde directory- en bestandsstructuur. Beginnen we met het betreden van de map waar de WordPress-installatie is opgeslagen.wp-content/pluginsMappen. Hier kun je een nieuwe map maken voor het plugin dat je gaat ontwikkelen. De naam van de map moet kort, uniek zijn en de functie van het plugin weergeven. Voorbeeld:my-first-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.

Het schrijven van de hoofdfail van een plugin

In deze map moet je een bestand maken met de naam....phpEen bestand met een extensie dat wordt gebruikt als hoofdbestand van een plugin heet meestal dezelfde naam als de map waarin het zich bevindt.my-first-plugin.phpDit bestand is de ingang van de plug-in. De opmerkingen over de plug-in bovenaan zijn verplicht, omdat deze de metagegevens van de plug-in aan WordPress verstrekken.

<?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
 */

In deze commentaar:Plugin NameDit is het enige vereiste onderdeel; de overige gegevens helpen gebruikers om je plugin in de backend te herkennen. Nadat je deze stap hebt afgerond, heb je in feite al een plugin gecreëerd die kan worden aktiveerd. Log in in de WordPress-backend en ga naar het menu “Plugins”. Hier moet je “Mijn eerste plugin” zien; hoewel deze plugin nog geen functies heeft, is hij nu al beschikbaar.

Construct plugin-functionalities en klassenopsluiting (class encapsulation)

Om de code helder en gemakkelijk te onderhouden te houden, is het aan te raden om de code op objectgerichte manier te organiseren. Definieer in het hoofdbestand of in een apart bestand een klasse die alle functionaliteiten van het plugin bevat.

if ( ! class_exists( 'My_First_Plugin' ) ) {
    class My_First_Plugin {
        public function __construct() {
            // 构造函数,用于初始化动作和过滤器
            add_action( 'init', array( $this, 'init' ) );
        }

public function init() {
            // 插件初始化时执行的操作
            // 例如:注册短代码、自定义文章类型等
        }
    }

// 实例化插件类
    new My_First_Plugin();
}

Deze structuur organiseert je functies in een aparte namenruimte, waardoor conflicten met de namen van functies in andere plugins of thema's worden vermeden.

Aanbevolen leesmateriaal WordPress plugin ontwikkeling: functionele modules bouwen van nul tot één

Realisatie van de kernfuncties: acties en filters

De kracht van WordPress-plug-ins ligt in het systeem van hooks, waaronder actions en filters. Het begrijpen en gebruiken van deze hooks is essentieel voor het ontwikkelen van plug-ins.

Functies toevoegen met action-hooks

Action hooks bieden je de mogelijkheid om je eigen code op bepaalde momenten tijdens het uitvoeren van WordPress in te voegen. Als je bijvoorbeeld wilt dat een bepaalde tekst automatisch wordt toegevoegd na de inhoud van een artikel, kun je hier een action hook gebruiken.the_contentEen filter is een soort “speciale actie”. Typischer zijn acties die op een andere manier worden uitgevoerd.wp_footerDit wordt gebruikt om content aan te toevoegen aan de onderste rand van de pagina.

public function __construct() {
    add_action( 'wp_footer', array( $this, 'add_custom_footer_text' ) );
}

public function add_custom_footer_text() {
    echo '<p style="text-align: center;">Fijn dat je het hebt gelezen! De inhoud is gemaakt door mijn eerste plugin.</p>';
}

In dit voorbeeld:add_custom_footer_textDe methode wordt opgeroepen in het voetnootgedeelte van elke pagina, waarna een segment met aangepaste tekst wordt weergegeven.

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%

Gegevens bewerken met filter-haken

Filter-haken worden gebruikt om gegevens te bewerken voordat deze naar de database of de browser worden gestuurd. Een bekend voorbeeld is het bewerken van de titel van een artikel. We kunnen dit dus gebruiken om…the_titleFilteren.

public function __construct() {
    add_filter( 'the_title', array( $this, 'customize_title' ) );
}

public function customize_title( $title ) {
    // 只在主循环中且不是后台管理界面时修改
    if ( ! is_admin() && in_the_loop() ) {
        return '📖 ' . $title;
    }
    return $title;
}

Deze filterfunctie neemt de oorspronkelijke titel als parameter op en returneert de gewijzigde titel. De logica hierachter is dat er voor de titel van de artikel die op de frontend wordt weergegeven een boekenemoji wordt toegevoegd.

Internationalisatie van plugins en configurabele opties

Om ervoor te zorgen dat de plugin door gebruikers overal ter wereld kan worden gebruikt, is internationalisatie (i18n) een essentieel stuk. Daarnaast kan het aanbieden van een backend-pagina waarop gebruikers de werking van de plugin kunnen instellen, de professionaliteit van de plugin aanzienlijk verbeteren.

Aanbevolen leesmateriaal Handboek voor beginners in het ontwikkelen van WordPress-plug-ins: bouw je eerste functionele plugin van scratch

Implementeer ondersteuning voor tekstvertalingen.

WordPress gebruikt de GNU gettext-technologie voor internationaalization. Alle teksten die op de frontend of backend van plugins worden weergegeven aan de gebruiker, moeten worden omhuld met specifieke functies.

Allereerst hebben we in het plugin-head van het hoofdbestand al de nodige definities gemaakt.Text DomainDomain PathVervolgens wordt, in de initialisatiefunctie, de tekstvakken geladen.

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.
public function init() {
    load_plugin_textdomain(
        'my-first-plugin',
        false,
        dirname( plugin_basename( __FILE__ ) ) . '/languages/'
    );
}

Vervolgens moet in de code de plek waar het uitgevoerde tekst wordt weergegeven worden vervangen door de vertaalfunctie. Bijvoorbeeld, in het vorige voetnoottekst:

echo '<p style="text-align: center;">' . esc_html__( '感谢阅读!本内容由我的第一个插件生成。', 'my-first-plugin' ) . '</p>';

esc_html__()De functie vertaalt de tekst en voert HTML-escapement uit, waardoor de veiligheid wordt gewaarborgd. De vertaler kan deze functie gebruiken..po.moDeze bestanden worden gebruikt om verschillende taalversies van je plugin te bieden.

Maak een pagina voor het instellen van de backend-instellingen.

Het gebruik van de WordPress Settings API biedt de mogelijkheid om een standaard en veilige instellingenpagina te creeren voor je plugin. Dit omvat meestal enkele stappen: registreren van de instellingen, toevoegen van instellingengebieden en velden, en het maken van een menupagina.

public function __construct() {
    add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
    add_action( 'admin_init', array( $this, 'settings_init' ) );
}

public function add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件', // 菜单标题
        'manage_options', // 权限
        'my-first-plugin', // 菜单slug
        array( $this, 'settings_page_html' ) // 回调函数,用于输出页面HTML
    );
}

public function settings_init() {
    register_setting( 'my_first_plugin_settings', 'my_first_plugin_options' ); // 注册一组设置

add_settings_section(
        'my_first_plugin_section',
        __( '基本设置', 'my-first-plugin' ),
        null,
        'my-first-plugin'
    );

add_settings_field(
        'footer_text',
        __( '自定义页脚文本', 'my-first-plugin' ),
        array( $this, 'footer_text_field_html' ),
        'my-first-plugin',
        'my_first_plugin_section'
    );
}

public function footer_text_field_html() {
    $options = get_option( 'my_first_plugin_options' );
    ?&gt;
    <input type='text' name='my_first_plugin_options[footer_text]' value='<?php echo esc_attr( $options['footer_text'] ?? '' ); ?>'>
    <?php
}

public function 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( 'my_first_plugin_settings' );
            do_settings_sections( 'my-first-plugin' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="nl"/></form>
    </div>
    &lt;?php
}

Nu kunnen gebruikers op de pagina “Instellingen” -> “Mijn plugins” de tekst voor de voetnoot instellen.add_custom_footer_textDe methode kan worden gewijzigd zodat deze waarden uit deze optie haalt, waardoor het plugin te configureren is.

Samenvatting

Met deze gids hebben we de belangrijkste stappen van het ontwikkelen van WordPress-plug-ins behandeld: van het opzetten van een lokale omgeving en het creeren van een basisbestandsstructuur, tot het organiseren van code met objectgerichte methoden. We hebben het kernmechanisme van WordPress voor uitbreidingen – action- en filterhooks – grondig bestudeerd en zijn praktische functies gaan implementeren, zoals het toevoegen van content aan de voetnoot en het wijzigen van artikeltitels. Ten slotte hebben we de professionaliteit en gebruikersvriendelijkheid van het plugin verbeterd door internationaalizing te doen, waardoor het toegankelijk is voor gebruikers overal ter wereld, en hebben we een veilige backend-configuratieomgeving gecreëerd met behulp van de Settings API. Het ontwikkelen van plug-ins is een proces van voortdurend leren en verbeteren. Nadat je deze basiskennis hebt vergaard, kun je verder ontdekken hoe je aangepaste artikeltypen, AJAX-interacties en REST API-integraties kunt realiseren, waardoor je krachtige en elegant geschreven WordPress-plug-ins kunt bouwen.

Veelgestelde vragen (FAQ)

Moet je objectgerichte programmering gebruiken om plugins te ontwikkelen?

Het is niet verplicht, maar wordt sterk aanbevolen. Hoewel procedurale programmering (met een groot aantal functies) de functionaliteit snel kan realiseren, wordt de code moeilijker te beheren en onderhouden wanneer er meer plugins worden toegevoegd. Bovendien kan het voorkomen dat er conflicten ontstaan tussen de namen van functies met andere plugins. Object Oriented Programming (OOP) omhult de code in klassen, waardoor deze beter te beheren is en minder gevoelig is voor dergelijke conflicten.$thisHet goed organiseren van variabelen en namenruimten (in nieuwe versies van PHP) is een best practice in de branche voor het bouwen van middelgrote en grote plugins.

Hoe moet je veilig omgaan met gebruikersinvoer of gegevens uit een database?

Wanneer je variabelen op een pagina weergeeft, moet je deze altijd ontsluiten. WordPress biedt een aantal hulpprogramma’s (functies) hiervoor aan. Afhankelijk van de context moet je de juiste functie gebruiken: wanneer je de variabelen gebruikt binnen HTML-taggen of in attributen, moet je de variabelen op een bepaalde manier weergeven.esc_html()esc_attr()Output in een JavaScript-variabele, met behulp vanwp_json_encode()esc_js()Wees gerust, de tekst zal worden weergegeven in de URL, zoals vereist.esc_url()Vertrouw nooit op gegevens die door gebruikers worden ingevoerd of onverwerkt. Het ontsluiten (escapen) van speciale tekens is van cruciaal belang om XSS-aanvallen (Cross-Site Scripting) te voorkomen.

Welke vereisten moeten worden vervuld om een plugin in het officiële WordPress-directory te kunnen indienen?

De plugins die worden ingediend in de plugincatalogus van WordPress.org moeten voldoen aan een aantal strenge vereisten. Hieronder valt onder andere dat de plugincode compatibel is met de GPL-licentie; er mag geen betaalmuur, versleutelde of gemixte code zijn; de plugin moet volledige internationale ondersteuning bieden; de plugin moet zich houden aan de coderingstandaarden en documentatievoorschriften van WordPress; en er mogen geen kwade acties worden uitgevoerd, zoals het bepalen van de oorsprong van telefoongesprekken of het minen van cryptocurrencies. Daarnaast moet het hoofdbestand van de plugin standaard plugin-informatie bevatten, en moet een volledige beschrijving van de plugin worden verstrekt.readme.txtHet document.

Hoe moet ik mijn plugin-code debuggen?

Allereerst moet je ervoor zorgen dat dit in de ontwikkelingsomgeving is ingeschakeld.WP_DEBUGVoor meer complexe debugging-mogelijkheden kan worden gebruikgemaakt van...error_log()De functie registreert de informatie in het foutenlogboek van de server, of gebruikt deze informatie op een andere manier.var_dump()wp_die()Om de waarde van een variabele te controleren (enkel in de ontwikkelingsomgeving te gebruiken), is een efficienter manier om de Xdebug-tool in een integreerde ontwikkelingsomgeving (zoals PhpStorm) in te zetten voor stap-voor-stap-foutopsporing. Daarnaast biedt WordPress ook ondersteuning voor dergelijke tools.WP_DEBUG_LOGWP_DEBUG_DISPLAYConstanten kunnen bepalen of fouten worden opgeslagen in een logbestand of op het scherm worden weergegeven.