WordPress-pluginontwikkeling van het begin tot de volmaaktheid: een compleet handboek voor het maken van persoonlijke websites

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

Waarom zou je willen leren hoe je plugins voor WordPress ontwikkelt?

WordPress is het meest populaire content management systeem ter wereld, en de grote schaalbaarheid van het systeem is te danken aan het plugin-systeem. Door zelf plugins te ontwikkelen, kunnen ontwikkelaars de beperkingen van bestaande thema's ontwijken en alle gewenste functies toevoegen aan een website – van eenvoudige kortcodes tot complexe e-commerce-systemen. Het beheersen van plugin-ontwikkelingsvaardigheden betekent dat je niet alleen de behoeften van specifieke projecten kunt vervullen, maar ook oplossingen kunt commercialiseren en waarde kunt toevoegen aan de grote WordPress-ecosysteem.

In tegenstelling tot wanneer je de inhoud van het onderwerp rechtstreeks verandert…functions.phpHet is een professioneler en duurzamer benadering om functies te verpakken in plugins in plaats van ze rechtstreeks in de bestanden van WordPress te implementeren. Plugins kunnen onafhankelijk van het thema worden gebruikt, waardoor functies eenvoudiger kunnen worden hergebruikt, apart worden onderhouden en worden bijgewerkt. Een goed opgezette plugin volgt de coderingstandaarden en architectuur van WordPress, waardoor de compatibiliteit met het core-systeem en andere plugins wordt gewaarborgd.

Vanuit het perspectief van carrièreontwikkeling heeft deze vaardigheid een zeer grote marktbehoeft en potentieel voor omzet, ongeacht of je als zelfstandige maatgeschikte oplossingen biedt aan klanten of als productmanager commerciële plugins ontwikkelt voor gebruikers wereldwijd.

Aanbevolen leesmateriaal WordPress-pluginontwikkeling vanaf nul: bouw je eigen functies en extensies

Maak je eigen omgeving voor het ontwikkelen van plugins.

Voordat je begint met schrijven van de eerste regel code, is het van belang om een professionele lokale ontwikkelingsomgeving op te zetten. Dit zorgt ervoor dat je tests en foutopsporingen kunt uitvoeren in een veilige en geisoleerde omgeving.

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.

Configuratie van de lokale serveromgeving

Het wordt aanbevolen om gebruik te maken van geïntegreerde lokale serverpakketten, zoals Local by Flywheel, DevKinsta of XAMPP. Deze tools installeren PHP, MySQL/MariaDB en een webserver (zoals Apache of Nginx) in één stap. Zorg ervoor dat je omgeving een PHP-versie gebruikt die overeenkomt met of up-to-date is met je doelomgeving (bijvoorbeeld PHP 7.4 of 8.0+), en dat de nodige PHP-extensies zijn geactiveerd, zoals MySQLi of PDO.

Code editors en debugging tools

Kies een krachtige code-editor of een integreerde ontwikkelomgeving (IDE). Visual Studio Code, PhpStorm of Sublime Text zijn allemaal uitstekende opties. Ze moeten over functies als syntaxis-highlighting, code-forraden en integratie met versiebeheer beschikken.

Foutopsporing is een essentieel onderdeel van het ontwikkelingsproces. Het is belangrijk om dit te doen…wp-config.phpDe WordPress-debogemodus is in het bestand geactiveerd.WP_DEBUGDe constante is ingesteld op...trueDit zal PHP-fouten, waarschuwingen en berichtgeving op het scherm weergeven, waardoor je het probleem snel kunt lokaliseren.

// 在 wp-config.php 中定义调试常量
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // 将错误记录到 /wp-content/debug.log
define( 'WP_DEBUG_DISPLAY', false ); // 不在前端显示错误

Initiëleren van het versiebeheerssysteem

Gebruik vanaf het begin Git voor versiebeheer. Initieer een repository in de rootdirectory van je plugin en maak er een….gitignoreBestanden… negeren bijvoorbeeld dingen als…node_modulesvendor(Met Composer) en alle configuratiebestanden die gevoelige informatie bevatten. Dit helpt je bij het bijhouden van codeveranderingen en het samenwerken met het team.

Aanbevolen leesmateriaal Van nul beginnen: bouw je eerste WordPress-plugin

Maak je eerste WordPress-plugin.

Een zeer basist WordPress-plugin vereist maar één hoofdPHP-bestand, waarin de plugin-informatie volgens de standaarden wordt opgenomen in de commentaren aan het begin van het bestand.

De structuur van het hoofdbestand van een plugin

In jouw...wp-content/pluginsIn de map maak je een nieuwe map, bijvoorbeeld...my-first-pluginIn deze map moet je een hoofd-PHP-bestand maken. De naam van het bestand is meestal dezelfde als de naam van de map.my-first-plugin.php

Open deze bestand en voeg aan het begin van de bestand een commentaar met de plugin-headertekst toe. Deze commentaren zijn nodig voor WordPress om de plugin te herkennen.

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

Na het opslaan van het bestand, log in je in bij het WordPress-administratiepaneel en ga naar de pagina “Plugins”. Hier moet je “Mijn eerste plugin” zien staan in de lijst met plugins. Activeer deze plugin. Hoewel deze plugin nog geen functies heeft, heb je met succes een eigen plugin gecreëerd.

Een simpel functie om te implementeren: het beheer van notificaties.

Laten we de eerste echte functionaliteit toevoegen aan deze plugin: het weergeven van een aangepaste notificatie in het beheerpaneel. Hiervoor gebruiken we de WordPress-beheernotificatie-API.

Voeg de volgende code toe onder de headercommentaren in het hoofdbestand van het plugin. We gebruiken...admin_noticesWe gebruiken Action Hooks om onze content op bepaalde plaatsen te weergeven.

Aanbevolen leesmateriaal Volledige gids voor het ontwikkelen van WordPress plugins: van basis tot geavanceerde praktische tips

// 钩子:在管理后台显示通知
add_action( 'admin_notices', 'mfp_display_admin_notice' );

/**
 * 在管理后台显示欢迎通知的函数。
 * 该函数通过 `admin_notices` 钩子被调用。
 */
function mfp_display_admin_notice() {
    // 检查当前用户是否有管理权限,避免向普通用户显示
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p><?php _e( '欢迎使用“我的第一个插件”!', 'my-first-plugin' ); ?></p>
    </div>
    &lt;?php
}

Code-uitleg:add_action()De functie gebruikt onze eigen gedefinieerde functie.mfp_display_admin_noticeMaken het beschikbaar voor gebruikadmin_noticesOp deze haak wordt de functie geplaatst. Wanneer WordPress de achtergrondnotificatiefunctie uitvoert, wordt onze functie opgeroepen. Binnen de functie worden eerst de gebruikersrechten gecontroleerd, en vervolgens een HTML-notificatie weergegeven met een succesvolle indeling en een sluitbare button.__()_e()Het internationaliseren van tekst met behulp van functies is een goede praktijk.

De kern van het verhaal: Hooks, shortcodes en opties

Om een uitgebreide plugin te kunnen ontwikkelen, is het belangrijk om de kernmechanismen van WordPress te beheersen: hooks, shortcodes en de Options API.

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.

Het begrijpen en toepassen van action- en filterhooks

Hookjes vormen de basis van de pluginarchitectuur van WordPress en bieden de mogelijkheid om je eigen code op bepaalde punten tijdens het uitvoeren van de kerncode in te voegen. Er bestaan twee soorten hookjes: Action-hookjes en Filter-hookjes.

Action hooks uitvoeren je code wanneer een bepaald evenement plaatsvindt, en er wordt geen terugkeerwaarde vereist.init(Initialisatie)wp_enqueue_scripts(Laden van front-end-scripts en -stijlen)save_post(Tijdens het opslaan van het artikel): We hebben dit eerder gebruikt.admin_noticesHet is gewoon een actie-hook.

De filterhook wordt gebruikt om gegevens te bewerken. Het ontvangt een waarde en vereist dat je de gewijzigde waarde teruggeeft. Hier is een voorbeeld:the_titleDe filteren bieden je de mogelijkheid om de weergave van de artikeltitels te bewerken.widget_textDe filteren bieden je de mogelijkheid om de tekstinhoud van de widgets te bewerken.

// 使用过滤器修改文章标题
add_filter( 'the_title', 'mfp_modify_post_title' );
function mfp_modify_post_title( $title ) {
    if ( ! is_admin() && in_the_loop() ) {
        return '📢 ' . $title;
    }
    return $title;
}

Snelcodes maken en gebruiken

Shortcodes maken het voor gebruikers mogelijk om met één simpel tag bepaalde functies of acties uit te voeren.[my_shortcode]In een artikel of pagina dynamische inhoud invoegen. Hierbij wordt gebruik gemaakt van…add_shortcode()Een functie voor het registreren van kortcodes.

// 注册一个短代码
add_shortcode( 'mfp_current_time', 'mfp_render_current_time_shortcode' );
/**
 * 渲染显示当前时间的短代码。
 * @param array $atts 短代码属性。
 * @param string $content 短代码包裹的内容(如果有)。
 * @return string 渲染后的HTML。
 */
function mfp_render_current_time_shortcode( $atts = [], $content = null ) {
    // 使用 shortcode_atts 设置默认属性并合并用户输入
    $atts = shortcode_atts( [
        'format' =&gt; 'Y-m-d H:i:s',
    ], $atts, 'mfp_current_time' );

// 根据格式获取当前时间
    $current_time = date( $atts['format'] );

// 返回输出
    return '<p class="mfp-time">Tijd: ' . esc_html($current_time) . '</p>';
}

Gebruikers kunnen tekst invoeren in de editor.[mfp_current_time format="F j, Y"]Toon de tijd in een specifiek gekozen format.

Gebruik de Option API om instellingen op te slaan.

Plugins moeten meestal enkele configuratiegegevens opslaan. WordPress biedt de Options-API aan om dit te kunnen doen.wp_optionsData wordt veilig opgeslagen, opgehaald en bijgewerkt in de tabel.

Gebruikadd_option()get_option()update_option()delete_option()Er zijn functies beschikbaar voor het bewerken van data. Voor meer overzicht is het aan te raden om een consistent prefix te gebruiken voor de namen van alle optie-sleutels.

// 定义默认选项
define( 'MFP_DEFAULT_MESSAGE', '你好,世界!' );

// 插件激活时设置默认选项(需要注册激活钩子)
register_activation_hook( __FILE__, 'mfp_set_default_options' );
function mfp_set_default_options() {
    if ( false === get_option( 'mfp_custom_message' ) ) {
        add_option( 'mfp_custom_message', MFP_DEFAULT_MESSAGE );
    }
}

// 在代码中获取选项值
$message = get_option( 'mfp_custom_message', MFP_DEFAULT_MESSAGE );
echo esc_html( $message );

Het bouwen van professionele plugins: veiligheid, beheer en publicatie

Als de functionaliteit van een plugin steeds complexer wordt, moet men rekening houden met de organisatie van de code, de beveiliging, de gebruikersinterface en de procesen voor het publiceren van de plugin.

Voldoe aan de beste beveiligingspraktijken.

Veiligheid is van vitaal belang bij het ontwikkelen van plugins. Het belangrijkste principe is: vertrouw nooit op de invoer van gebruikers. Verifieer, reinig en ontsluit alle gegevens die vanuit gebruikers, de database of externe API's komen.
* 验证(Validation):检查数据是否符合预期格式(如是否是邮箱、数字),使用filter_var()preg_match()Of WordPress-functies als...is_email()
* 清理(Sanitization):清理数据,移除不安全字符。对于文本输入,使用sanitize_text_field()Voor HTML-content wordt gebruikt:wp_kses_post()Voor URL's wordt gebruik gemaakt van...esc_url_raw()
* 转义(Escaping):在将数据输出到HTML、JavaScript或URL时,根据上下文进行转义。使用esc_html()esc_attr()esc_js()esc_url()En andere functies.
* 非ce验证:所有可能修改数据库的操作(如表单提交)都必须包含非ce验证,使用wp_nonce_field()wp_verify_nonce()

Maak een pagina voor het beheer van instellingen.

Voor plugins waarbij de gebruiker zelf instellingen moet maken, is het essentieel om een duidelijke beheerpagina te bieden. WordPress beschikt over een instellingen-API die dit proces versoepelt; deze API verzorgt automatisch de controle op de CEP-verificatie, de bevoegdheden van de gebruiker en het opslaan van de gegevens.

Je moet gebruikmaken van...add_options_page()add_menu_page()Voeg de gewenste functies toe aan de pagina en gebruik ze vervolgens.register_setting()add_settings_section()add_settings_field()Om de instellingen van het veld te definiëren…

Organiseren van code en voorbereiden op publicatie

Plaats niet al het code in één hoofdbestand. Naarmate er meer plugins worden toegevoegd, moet de code worden opgesplitst in verschillende bestanden op basis van functionaliteit. Een typisch bestandsstructuur kan als volgt zijn:
* /adminDe code die te maken heeft met de backend (bijvoorbeeld instellingenpagina's) wordt hier opgeslagen.
* /publicBevat code die te maken heeft met de front-end-technologie.
* /includesBevat de klassen en functies voor de kernfuncties.
* /assetsHier worden CSS, JavaScript en afbeeldingen opgeslagen.
* /languagesPlaats hier de internationale vertaalmappen (.po/.mo).

Gebruikrequire_onceinclude_onceVoer deze bestanden op de juiste plekken in. Overweeg om PHP-dependenties te beheren met Composer, en front-end-resources met NPM of Yarn.

Voor het publiceren, moet je ervoor zorgen dat je plugin voldoet aan de officiële WordPress-handvest voor pluginontwikkeling en de codingstandaarden. Gebruik tools als PHP_CodeSniffer voor een controle. Schrijf duidelijke en goed leesbare code.readme.txtDe documentatie beschrijft uitgebreid de functies van het bestand, de stappen voor het installeren, screenshots en de update-logboeken.

Samenvatting

Het ontwikkelen van WordPress-plug-ins is een proces dat begint met het begrijpen van de basisinfrastructuur (plug-inbestanden, hooks), verder gaat naar kernconcepten (shortcodes, option-API) en uiteindelijk leidt tot professioneel ontwikkelen (beveiliging, architectuur, publicatie). Door te starten met het maken van een eenvoudige “Hello World”-plug-in, en daar steeds meer functies aan te toevoegen zoals achtergrondnotificaties, shortcodes en instellingen, kun je het hele ontwikkelingsproces systematisch onder de knie krijgen. Vergeet niet dat het schrijven van veilige, efficiënte en onderhoudsbare code, in overeenstemming met de specificaties en beste praktijken van de WordPress-ecosysteem, essentieel is voor het maken van succesvolle plug-ins. Door continu te leren, de officiële documentatie te lezen en de broncode van goede plug-ins te bestuderen, kun je je vaardigheden verbeteren en van een beginner een expert worden.

Veelgestelde vragen (FAQ)

moet je om plugins voor ### te ontwikkelen vloeiend PHP kunnen spreken?
Ja, een solide basis in PHP is essentieel, omdat het core van WordPress en zijn plugins allemaal in PHP zijn geschreven. Je moet de PHP-synthese, functies, arrays en concepten van objectgericht programmeren begrijpen. Daarnaast is een basiskennis van HTML, CSS en JavaScript heel belangrijk, aangezien deze worden gebruikt voor het bouwen van de front-end-interfaces en interacties van de plugins.

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

Plaats de functionaliteitscode in het thema.functions.phpIn de bestanden wordt deze functie gekoppeld aan een bepaald thema. Als je het thema wijzelt, werken deze functies niet meer. Plugins daarentegen zijn onafhankelijk van het thema en werken in alle actieve thema’s, waardoor ze gemakkelijker kunnen worden hergebruikt, onderhouden en verspreid. Voor functies die op de lange termijn worden gebruikt of aan anderen worden geleverd, is het daarom beter om een plugin te ontwikkelen.

Hoe debug ik mijn plugin-code?

Het activeren van de debug-modus in WordPress is de belangrijkste eerste stap. Dit kan worden gedaan door de instellingen te bewerken.WP_DEBUGOm fouten aan te tonen, worden relevante constante gebruikt.error_log()De functie slaat de variabelgegevens op in het serverlogboek met fouten.debug.logIn het bestand vind je alle benodigde informatie. Daarnaast is het mogelijk om professionele debugging-plugins te installeren, zoals Query Monitor. Query Monitor biedt uitgebreide details over database-opvragen, hooks en scripts, waardoor het een zeer nuttig hulpmiddel is voor ontwikkelaars.

Hoe kan mijn plugin worden geïnternationaliseerd voor meerdere talen?

WordPress gebruikt het GNU gettext-framework voor internationaalization (internationalisering). In je plugin moet je voor alle teksten die worden getoond aan de gebruiker gebruikmaken van vertaalfuncties.()_e()esc_html()Wacht even, en bepaal de tekstdomen (Text Domains). Vervolgens gebruik je tools als Poedit om de code van de plugin te analyseren, waarna de gewenste resultaten worden gecreëerd..potTemplatebestanden: vertalers gebruiken deze bestanden om versies in verschillende talen te creeren..po.moDe bestand moet worden geplaatst in het plugin./languagesHet staat in de map.