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

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

Om een WordPress-plugin te ontwikkelen, moet je eerst in het installatieverkeer van WordPress kijken. wp-content/plugins Maak een aparte map binnen de map. De naam van deze map moet te maken hebben met de kernfunctie of de naam van je plugin, en het is het beste om alleen kleine letters en strepen te gebruiken. Voorbeeld: my-first-plugin

Volgens de instructies moet je nu een hoofdpluginbestand maken in deze map. Dit bestand wordt meestal vernoemd naar de naam van de plugin, bijvoorbeeld... my-first-plugin.phpDeze bestand is de ingangspunt voor het plugin, en aan de bovenkant moet een plugin-headnote staan die voldoet aan de WordPress-standaarden. Deze noteblok wordt gebruikt om het WordPress-systeem basist informatie over het plugin te geven en is essentieel voor het herkennen en activeren van het plugin.

Een typisch commentaar in het begin van een plugin looks als volgt:

Aanbevolen leesmateriaal Van nul af WordPress-pluginontwikkeling meesteren: een volledig handboek met praktische oefeningen

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

Nadat je deze bestand hebt gecreëerd en ingevuld, kun je je plugin zien op de “Plugins”-pagina in het WordPress-administratiepaneel en deze activeren. Dit is het begin van je reis als plugin-developer.

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 begrijpen van de basisstructuur van een plugin

Een goed georganiseerd WordPress-plugin is niet alleen gemakkelijk in onderhoud, maar ook voor andere ontwikkelaars begrijpelijk. Het volgen van standaardorganisatieprincipes maakt je code duidelijker en professioneler.

De organisatie van kernbestanden en mappen

Naast het hoofdpluginbestand bevat een volledig functionerend plugin meestal meerdere mappen en bestanden.includes/ De map wordt gebruikt om de belangrijkste PHP-klassen of functiebestanden op te slaan.admin/ De map bevat de code die betrekking heeft tot de backend-beheerinterface.public/frontend/ De map bevat code die is gericht op bezoekers van de website.assets/ De map (directory) wordt gebruikt om statische bronnen op te slaan, zoals JavaScript, CSS en afbeeldingen.

Daarnaast kan het ook nodig zijn om… languages/ De map bevat de internationale vertaalmappen (.po/.mo), evenals een… uninstall.php De plugin die wordt gebruikt om bestanden te verwerken, bevat ook code voor het schoonmaken van de inhoud wanneer de plugin wordt verwijderd. Een goede directorystructuur is de basis voor het bouwen van onderhoudsgevende en uitbreidbare plugins.

Plugin-levenscyclus en standaard-haken

WordPress-plug-ins communiceren met het kernsysteem via een reeks “hooks”. Om het levenscyclus van een plugin te begrijpen, is het belangrijk om de volgorde van uitvoering van deze hooks te begrijpen. Wanneer WordPress een verzoek verwerkt, laadt het eerst de kernbestanden, vervolgens het thema en ten slotte de actieve plug-ins.

Aanbevolen leesmateriaal Volledig handboek voor het ontwikkelen van WordPress-plug-ins: van de basis tot praktische toepassingen

Pluginontwikkelaars kunnen dit gebruiken. register_activation_hook Een eenmalig taak uitvoeren wanneer een plugin wordt aktiveerd, bijvoorbeeld het maken van een tabel in een database.register_deactivation_hook Dit wordt gebruikt om acties uit te voeren wanneer een plugin is uitgeschakeld (let op: dit betekent niet dat de plugin wordt verwijderd). register_uninstall_hook Of een onafhankelijke… uninstall.php De bestanden dienen om gegevens te verwijderen wanneer de plugin uit WordPress wordt gehaald.

Tijdens de dagelijkse uitvoering zijn de twee meest gebruikelijke soorten hooks Action en Filter. Met een Action kun je bepaalde acties uitvoeren op specifieke momenten (bijvoorbeeld wanneer een bepaalde gebeurtenis optreedt). initDe code wordt ingevoerd om een bepaalde functie uit te voeren; filters bieden je de mogelijkheid om de gegevens aan te passen die door andere functies worden overgedragen. the_content)。

Implementeren van de kernfuncties en veilige interacties

Het belangrijkste doel van het ontwikkelen van plugins is om nieuwe functies te toevoegen aan WordPress. Of het nu gaat om het toevoegen van een shortcode, het maken van een klein hulpmiddel of het verwerken van formuliergegevens, altijd moet worden gevolgd met de beveiligings- en interactievereisten van WordPress.

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%

Een kort codefragment maken om inhoud af te drukken

Shortcodes zijn een krachtig hulpmiddel dat gebruikers in artikelen of pagina's toestaat om dynamische inhoud in te voegen met behulp van een simpel tag. Je kunt ze dus gebruiken om... add_shortcode Er is een functie beschikbaar om je eigen kortere codes te registreren.

Als voorbeeld: De volgende code registreert een entiteit met de naam... greet De kortcode voor dit, deze accepteert een… name Vraag de gebruiker om de eigenschappen op te geven en groet hem of haar.

function myplugin_greet_shortcode( $atts ) {
    // 使用 shortcode_atts 函数设置默认值并合并用户属性,确保安全性
    $atts = shortcode_atts( array(
        'name' =&gt; '访客',
    ), $atts, 'greet' );

// 在输出前对用户输入进行转义
    $name = esc_html( $atts['name'] );
    return '<p>Hallo, %1$s! Welkom op deze website.</p>'php
add_shortcode('greet', 'myplugin_greet_shortcode');

Gebruikers kunnen tekst invoeren in de artikeleditor. [greet name=“小明”]Op de front-end wordt dan “Hallo, Xiaoming! Welkom op deze website!” weergegeven. Vergeet niet dat alle gegevens die van de gebruiker worden verzameld, vooraf moeten worden geëscapeseerd of gevalideerd, net zoals in het bovenstaande voorbeeld wordt gedaan. esc_html

Aanbevolen leesmateriaal Een introductie tot het ontwikkelen van WordPress-plug-ins: maak je eerste aangepaste plug-in vanaf nul.

Een instellingenpagina toevoegen voor de plugin

Voor plugins waarbij de gebruiker zelf instellingen moet maken, is het gebruikelijk om een backend-pagina met opties te creeren. Je kunt de “Settings API” van WordPress gebruiken om op veilige en gemakkelijke manier nieuwe pagina’s en velden toe te voegen. De API verzorgt automatisch de beveiliging (met behulp van een nonce) en de opslag van de gegevens.

Allereerst gebruiken we add_options_pageadd_menu_page Voeg de betreffende functies toe als menu-item en pagina in het beheerpaneel. Vervolgens gebruik je deze functies… register_settingadd_settings_sectionadd_settings_field Gebruik functies als `define` om je instellingsopties te definiëren.

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.

Hieronder vindt u een framework-code voor het maken van een eenvoudige instellingenpagina:

function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',        // 所需权限
        'myplugin-settings',     // 菜单 Slug
        'myplugin_settings_page' // 用于渲染页面的回调函数
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

function myplugin_settings_init() {
    register_setting( 'myplugin_settings_page', 'myplugin_settings' );
    add_settings_section( 'myplugin_section', '基础设置', null, 'myplugin_settings_page' );
    add_settings_field(
        'api_key',
        'API 密钥',
        'myplugin_api_key_field_render', // 渲染输入字段的函数
        'myplugin_settings_page',
        'myplugin_section'
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

function myplugin_api_key_field_render() {
    $options = get_option( 'myplugin_settings' );
    $value = isset( $options['api_key'] ) ? esc_attr( $options['api_key'] ) : '';
    echo '<input type="text" name="myplugin_settings[api_key]" value="' . $value . '" />';
}

function myplugin_settings_page() {
    ?&gt;
    <form action='/nl/options.php/' method='post' data-trp-original-action="options.php">
        <h2>Mijn plug-ininstellingen</h2>
        <?php
        settings_fields( 'myplugin_settings_page' );
        do_settings_sections( 'myplugin_settings_page' );
        submit_button();
        ?>
    <input type="hidden" name="trp-form-language" value="nl"/></form>
    &lt;?php
}

Het gebruik van de settings-API zorgt ervoor dat de instellingen van je plugin veilig worden opgeslagen. wp_options De gegevens zijn opgeslagen in een tabel, en de beheerinterface is in overeenstemming met het design van WordPress.

Volgens de beste ontwikkelingspraktijken…

Een plugin schrijven die op de lange termijn stabiel werkt, gemakkelijk te onderhouden is en goed samenwerkt met andere plugins, vereist het naleven van enkele belangrijke best practices.

Zorg ervoor dat de code veilig is.

Veiligheid is van het hoogste belang bij het ontwikkelen van plugins. Alle door gebruikers ingevoerde gegevens (inclusief gegevens van URL's, formulieren, cookies en databases) moeten worden gevalideerd, gereinigd en geëscapeseerd. Hierbij kun je de verschillende functies van WordPress gebruiken, zoals… esc_htmlesc_urlsanitize_text_field Verwerk de uitstoot en gebruik dit. wp_verify_noncecheck_admin_referer Om de legitiemheid van een verzoek te controleren en aanvallen met cross-site request forgery (CSRF) te voorkomen.

Tijdens het uitvoeren van database-opvragen is het heel belangrijk om altijd... $wpdb De door de klasse geboden methoden (zoals) prepareOm SQL-injectieaanvallen te voorkomen, moet je nooit de invoer van gebruikers rechtstreeks samenvoegen met SQL-opdrachten.

Internationalisatie en lokalisatie realiseren

Om je plugin beschikbaar te maken voor WordPress-gebruikers overal ter wereld, is internationalisatie (i18n) essentieel. Dat betekent dat je alle teksten die worden getoond aan de gebruiker moet omvatten met de vertaalfuncties van WordPress.

Definieer dit in de commentaren bovenin je plugin. Text Domain(zoals) my-first-plugin) en Domain PathIn het code, moet voor alle strings die moeten worden vertaald worden gebruikt… __() Vertalen: _e() Vertaal en wees direct met de uitvoer: _n() Verwerken van singular- en pluralvormen.

Bijvoorbeeld:$text = __(‘Hello World’, ‘my-first-plugin’);Vervolgens kunt u tools gebruiken zoals Poedit om de vertaling te genereren. .pot Templatebestanden, bedoeld voor vertalers om mee te werken .po.mo De bestanden moeten worden geplaatst in de rootmap van het plugin. /languages Als je een map aanmaakt, zal WordPress automatisch de corresponderende vertalingen laden afhankelijk van de taal van de website.

Code optimaliseren en performance beoordelen

Plug-ins met slechte prestaties kunnen het hele website-systeem vertragen. Het is belangrijk om te voorkomen dat er bij elke pagina-laadactie veel onnodige code wordt uitgevoerd. Scripten en stijlregels die alleen in de achtergrond worden gebruikt, moeten worden beperkt tot wanneer dit echt nodig is, door gebruik te maken van conditionele bewerkingen. is_admin()De front-end-resources worden alleen in de achtergrond geladen. wp_enqueue_script()wp_enqueue_style() In de juiste hangmappen (zoals...) wp_enqueue_scriptsDe inhoud wordt in de wachtrij geladen.

Voor tijdrovende operaties of externe API-oproepen kun je het Transients API van WordPress overwegen.set_transientget_transientDe plugin zal de inhoud opslaan in de cache. Daarnaast moet worden gezorgd dat de plugin, wanneer deze wordt uitgeschakeld of verwijderd, nog steeds correct kan worden gebruikt. uninstall.php De database-tabelen en opties die je zelf hebt gecreëerd moeten worden gereinigd, maar dit moet met zorg worden gedaan. Geef de gebruikers de mogelijkheid om te kiezen of de gegevens wel of niet worden verwijderd.

Debuggen, testen en publiceren

Voor het leveren van je plugin aan de gebruikers, zijn grondige afstelling, testing en voorbereidende werkzaamheden essentiele stappen om het succes te garanderen.

Het gebruik van de WordPress-debugging-tools

Tijdens de ontwikkelingsfase wordt het sterk aanbevolen om de debug-modus van WordPress aan te zetten. wp-config.php De instellingen zijn gedaan in het bestand. define(‘WP_DEBUG’, true);Dit zorgt ervoor dat alle PHP-fouten, waarschuwingen en berichtgeving worden weergegeven, waardoor je het probleem snel kunt lokaliseren. Je kunt dit ook tegelijkertijd activeren. WP_DEBUG_LOG De fouten worden in een logbestand opgeslagen, of deze functie wordt geactiveerd. SCRIPT_DEBUG Om het gemakkelijker te maken om fouten te vinden, worden ongecomprimeerde JavaScript- en CSS-bestanden geladen.

Pripare informatie voor de publicatie van de plugin

Als je van plan bent je plugin in te dienen bij het officiële WordPress.org-pluginverzeichnis, moet je een aantal stukken materiaal voorbereiden. Dit omvat onder andere een uitgebreide… readme.txt De bestand moet in een format zijn dat voldoet aan de vereisten van WordPress, en moet informatie bevatten over de beschrijving van het plugin, de installatiestappen, veelvoorkomende vragen, update-logboeken, etc. Daarnaast moet je high-quality banner- en iconenleveren, en de beschrijving van het SVN-repo van het plugin invullen.

Op het gebied van code moet je ervoor zorgen dat je al alle internationale instellingen hebt geregeld en dat je alle code nauwkeurig hebt gecontroleerd om te zien of deze voldoet aan de codingstandaarden van WordPress. Je kunt dit lokaliseren door PHP_CodeSniffer te gebruiken in combinatie met de regels voor de WordPress-codingstandaarden.

Cross-environmental compatibility testing uitvoeren

Voordat je je plugin publiceert, moet je deze testen in verschillende omgevingen. Dit betekent dat je de plugin moet testen op verschillende versies van WordPress (met name de huidige versie en de vorige belangrijke versie), verschillende PHP-versies (zoals PHP 7.4, 8.0, 8.1), verschillende database-versies (MySQL/MariaDB), en de compatibiliteit met populaire thema's en andere plugins moet controleren. Zorg ervoor dat je plugin geen fouten of waarschuwingen vertoont op alle stappen van het proces: van activeren tot gebruiken, inclusief het instellen van de instellingen.

Samenvatting

Het ontwikkelen van WordPress-plug-ins is een proces waarbij je creativiteit omzet in functionele onderdelen die worden geïntegreerd in een grote ecosystem. Je begint met het maken van een standaard hoofdbestand, bouwt vervolgens een duidelijke structuur voor de bestanden op en leert de kernmechanismen van interactie, zoals acties (actions) en filters (filters). Bij het implementeren van specifieke functies, zoals shortcodes en instellingenpagina's, moet je altijd rekening houden met veiligheid (verificatie, ontsnapping van gevaarlijke inhoud, bescherming tegen injecties) en internationalisatie. Volg de beste praktijken, zoals het optimaliseren van de prestaties, het goed beheersen van resources en het gebruiken van debugging-hulpmiddelen om de kwaliteit van je code te garanderen. Uiteindelijk, na uitgebreide testen in verschillende omgevingen en een goede voorbereiding op de publicatie, kan je plugin stabiel en veilig worden gebruikt door WordPress-gebruikers wereldwijd. Het voortdurend bestuderen van de officiële handleidingen en community-resources is essentieel om je ontwikkelingsniveau te verbeteren.

Veelgestelde vragen (FAQ)

Welke basiskennis is vereist om een WordPress-plugin te ontwikkelen?

Je moet een solide basis in PHP-programmering hebben, omdat de kernlogica van het plugin voornamelijk in PHP is geschreven. Daarnaast moet je een basiskennis hebben van HTML, CSS en JavaScript, om gebruikersinterfaces en interacties te kunnen bouwen. Het belangrijkste is dat je vertrouwd bent met de basisarchitectuur van WordPress, inclusief het hook-systeem (actions en filters), de themacycle, de databasestructuur, en de gebruik van verschillende kernfuncties en klassen.

Hoe voorkom ik dat mijn plugin conflicteert met andere plugins?

Het toevoegen van een unieke prefix aan alle je functies, klassen, constanten, actie-/filterlabels en optienamen is de effectiefste manier om conflicten te voorkomen. Gebruik geen algemene namen. add_user()$countIn plaats daarvan moet je een prefix gebruiken dat te maken heeft met je plugin. myplugin_add_user()$myplugin_countHet is ook een goede praktijk om je code op te pakken in een klasse of een namespace. Daarnaast is het handig om unieke handheden (handles) te gebruiken voor het beheer van schrijvenlijsten (queues) en stijlen (styles), en om resources op verzoek te laden.

Waar moet ik de gegevens van de plugin opslaan?

Voor eenvoudige configuratieopties kun je de Options API van WordPress gebruiken.add_option, get_option, update_optionDe gegevens worden opgeslagen in… wp_options In de tabel wordt de simpelste en meest standaardiseerde manier gebruikt om gegevens op te slaan. Als je veel gestructureerde, aangepaste gegevens (bijvoorbeeld producten, bestellingen, etc.) moet opslaan, moet je een aangepaste database-tabel maken. $wpdb Objecten worden gecreëerd en worden gebruikt wanneer de plugin is geactiveerd. dbDelta() Deze functie wordt gebruikt om de structuur van tabellen te creeren en bij te werken, waardoor de compatibiliteit tussen verschillende versies van databases wordt gewaarborgd.

Na het verwijderen van een plugin, hoe kun je de door dat plugin gecreëerde gegevens opruimen?

WordPress biedt twee belangrijke manieren aan. De eerste manier is om… register_uninstall_hook() De functie registreert een uninstall-hook. De tweede en tevens aanbevolen methode is om in de root-map van het plugin een apart bestand te creëren. uninstall.php File. In deze file moet je controleren of er vanuit WordPress een oproep is gedaan. WP_UNINSTALL_PLUGIN Eerst worden de constante waarden vastgesteld, en vervolgens worden de mogelijkheden om zelf te bepalen wat wordt verwijderd uitgevoerd (met behulp van...). delete_optionClean-up operations such as deleting files and custom database tables. Vergeet niet om in de beschrijving van het plugin duidelijk te maken welke gegevens worden verwijderd.