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

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

Waarom zou je een WordPress-plugin ontwikkelen?

WordPress is het populairste content management systeem ter wereld en zijn grote schaalbaarheid is voornamelijk te danken aan het plugin-systeem. Door zelf plugins te ontwikkelen, kunnen ontwikkelaars alle gewenste functies toevoegen aan het basisplatform zonder de kernbestanden van WordPress te hoeven aanpassen. Dit zorgt voor de onafhankelijkheid en onderhoudbaarheid van het codebestand; zelfs wanneer thema's worden bijgewerkt of versies van WordPress worden geüpgraded, blijven de functies van de plugins stabiel. Of het nu om specifieke bedrijfsbehoeften te vervullen, de prestaties van een website te verbeteren of oplossingen te delen in de community gaat, het beheersen van pluginontwikkeling is een zeer waardevolle vaardigheid.

Een standaard WordPress-plugin bestaat in feite uit één of meerdere PHP-bestanden, die zijn opgeslagen in een specifieke map in het WordPress-installatiepad./wp-content/plugins/De plugins zijn opgeslagen in een speciale map en worden door WordPress herkend dankzij specifieke commentaren in de bestandskoppen. Terwijl themaontwikkeling zich richt op het uiterlijk en de lay-out van een website, richt pluginontwikkeling zich op de functionaliteit en de logica ervan, zodat de plugins met elk thema kunnen worden gebruikt. De filosofie van deze scheiding van aandacht vormt de basis voor het bouwen van sterke, herbruikbare WordPress-toepassingen.

Maak je eerste pluginstructuur op

Het eerste stap in het ontwikkelen van een plugin is het creeren van een correcte bestandsstructuur. Dit is niet alleen nodig om de code te organiseren, maar ook om WordPress in staat te stellen de plugin te herkennen en te activeren.

Aanbevolen leesmateriaal Ultimatumgids voor het ontwikkelen van WordPress-plug-ins: van nul tot een op maat gemaakte functie

Maak een hoofdpluginbestand.

Elk plugin moet een hoofdbestand hebben dat de standaardgegevens van het plugin bevat. Dit bestand heet meestal naar de naam van het plugin.my-first-plugin.phpDe commentaren in het bestandskop zijn essentieel voor WordPress, zodat het de naam, beschrijving, versie en andere informatie van de plugin kan lezen.

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

Plaats de bestand met de bovenstaande code in een geschikte locatie./wp-content/plugins/my-first-plugin/Na het toevoegen van de map kun je de plugin zien op de “Plugins”-pagina in het WordPress-administratiecentrum, en je kunt deze activeren of deactiveren.Text DomainVoor internationaal gebruik.Domain PathDe map waar de taalbestanden zijn opgeslagen, is specifiek opgegeven.

Organiseren van de plugin-map en bestanden

Voor eenvoudige plugins is één bestand vaak voldoende. Voor complexere plugins is een goede indeling van de mappen echter van belang. Een typisch mapstructuur voor een plugin kan als volgt zijn:

my-advanced-plugin/
├── my-advanced-plugin.php      // 主插件文件
├── includes/                   // 核心PHP类与函数
│   ├── class-core.php
│   └── functions.php
├── admin/                      // 后台相关文件
│   ├── css/
│   ├── js/
│   └── class-admin.php
├── public/                     // 前端相关文件
├── assets/                     // 静态资源(图片、图标等)
└── languages/                  // 国际化语言文件

Deze structuur sorteert de backend-logica, frontend-logica en resourcebestanden op specifieke onderdelen, waardoor de code gemakkelijker te beheren is en samenwerking tussen teamleden verbeterd wordt. In het hoofdpluginbestand moet je meestal gebruikmaken van…require_onceinclude_onceOm de functiebestanden uit deze submappen te kunnen gebruiken…

Verstaan en toepassen van de kern-API's: acties en filters

De kern van het ontwikkelen van WordPress-plug-ins ligt in hun eventgedreven architectuur.Hook(Systeemimplementatie: Hooks) Er zijn twee soorten hooks: actiehooks (action hooks).ActionEn filter-hakenFilterZe vormen de brug tussen plugins en het kernprogramma van WordPress, thema's en andere plugins.

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

Code uitvoeren met behulp van action hooks

Action hooks bieden je de mogelijkheid om je eigen code op bepaalde momenten tijdens het uitvoeren van WordPress in te voegen. Denk hierbij aan momenten als wanneer een artikel wordt gepubliceerd, wanneer een gebruiker inlogt, of wanneer het menu in het administratieve gebied wordt geladen.add_action()De functie maakt je eigen gedefinieerde functie beschikbaar voor een bepaald actie-punt (action hook).

Als je bijvoorbeeld wilt dat er enkele aangepaste inhoud wordt weergegeven in de bovenste helft van de website, kun je dit toevoegen door het te monteren (of te integreren) in de betreffende onderdelen van de website.wp_headDeze actie:

function myplugin_add_custom_head_content() {
    echo '<meta name="my-custom-tag" content="value">';
}
add_action( 'wp_head', 'myplugin_add_custom_head_content' );

Een ander veel voorkomend voorbeeld is dat er bij het activeren van een plugin enkele initialisatieacties worden uitgevoerd, zoals het creeren van tabelkenmerken in een database. Hiervoor is het nodig om de plugin te koppelen (of te 'mounten') aan de relevante systeemcomponenten.register_activation_hookDeze speciale haak.

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 myplugin_activate() {
    // 执行创建数据表等初始化代码
}
register_activation_hook( __FILE__, 'myplugin_activate' );

Gegevens bewerken met filter-haken

Filter-haken worden gebruikt om de gegevens die worden overgedragen in een proces te bewerken. In tegenstelling tot actie-haken moeten filterfuncties een invoerwaarde ontvangen en een gewijzigde waarde teruggeven.add_filter()Een functie om filters te toevoegen.

Als voorbeeld: het wijzigen van de weergave van de artikeltitel.

function myplugin_modify_post_title( $title ) {
    return '【推荐】' . $title;
}
add_filter( 'the_title', 'myplugin_modify_post_title' );

Filteren kan ook worden gebruikt om queryparameters, menu-items en zelfs de instellingen van een plugin te bewerken. Het begrijpen en vaardig gebruiken van acties en filters is essentieel voor het ontwikkelen van flexibele en goed compatibele plugins.

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

Een backend-beheerinterface maken voor de plugin

De meeste plugins hebben een configuratiepagina nodig, zodat de webbeheerder opties kan instellen. WordPress biedt een uitgebreide API aan om ontwikkelaars te helpen bij het snel bouwen van standaardiseerde achtergrondinterfaceten.

Voeg een beheermenu en submenues toe.

Gebruikadd_menu_page()De functie kan een topmenu toevoegen aan de achtergrondsbalk van je plugin. Je moet parameters aanleveren, zoals de paginatitel, de menutitel, de toegangrechten, de menualias en de callback-functie.

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.
function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',       // 所需权限(管理员)
        'myplugin-settings',    // 菜单别名(slug)
        'myplugin_settings_page', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标(使用Dashicons)
        80                      // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

De corresponderende callback-functiemyplugin_settings_page()Verantwoordelijk voor het renderen van de HTML-inhoud op de instellingenpagina. Voor complexere plugins kan het ook nodig zijn om andere tools of methoden te gebruiken.add_submenu_page()Voeg een submenü toe.

De configuratie wordt gespeeld op met de setting API.

Het handmatig verwerken van formulierinzendingen en het opslaan van keuzes is zowel tijdrovend als onveilig. De WordPress Settings API biedt een veilige en standaardiseerde manier om instellingen, velden en onderdelen van een website te registreren.

Allereerst gebruiken weregister_setting()Registreer een groep instellingen en definieer de validatie-callbacks voor deze instellingen.

function myplugin_register_settings() {
    register_setting(
        'myplugin_settings_group', // 设置组名,需与 settings_fields() 调用一致
        'myplugin_option_name',    // 存储在 wp_options 表中的选项名
        array( 'sanitize_callback' => 'myplugin_sanitize_input' ) // 清理回调
    );

// 添加一个设置区块
    add_settings_section(
        'myplugin_main_section',   // 区块ID
        '主要设置',                // 区块标题
        'myplugin_section_callback', // 区块介绍文本的回调函数
        'myplugin-settings'        // 所属页面的别名
    );

// 在区块中添加一个字段
    add_settings_field(
        'myplugin_text_field',     // 字段ID
        '示例文本输入',            // 字段标签
        'myplugin_text_field_callback', // 渲染字段HTML的回调
        'myplugin-settings',       // 页面别名
        'myplugin_main_section'    // 所属区块ID
    );
}
add_action( 'admin_init', 'myplugin_register_settings' );

Vervolgens, in de callback-functie op de instellingenpagina, gebruiken we...settings_fields()do_settings_sections()submit_button()Functies zoals `print()` worden gebruikt om de inhoud van een formulier af te drukken.

Zorg ervoor dat de plugin veilig en gemakkelijk te onderhouden is.

Het ontwikkelen van een plugin gaat niet alleen om het realiseren van bepaalde functionaliteiten, maar ook om ervoor te zorgen dat de plugin veilig, efficiënt is en gemakkelijk kan worden onderhouden op de lange termijn.

Datavalidatie, -reiniging en -ontsnapping

Dit vormt de eerste verdedigingslinie voor de veiligheid van plugins. Alle gegevens die vanuit gebruikers of externe bronnen komen…$_POST$_GET$_COOKIEAlles moet worden verwerkt voordat het in de database wordt opgeslagen of op de pagina wordt weergegeven.

  • Validatie: Het controleren of gegevens voldoen aan het verwachte formaat, type of bereik. Hier worden functies gebruikt als...filter_var()is_email()Of gebruik een zelfgemaakte reguliere expressie.
  • Sanitization: Het verwijderen van ongeoordeelde of gevaarlijke karakters uit gegevens om deze veilig te maken. Voor verschillende soorten gegevens biedt WordPress een groot aantal saniteringsfuncties, zoals…sanitize_text_field()(Gebruikt voor tekst)sanitize_email()sanitize_key()etc.
  • Escaping: Wanneer gegevens worden uitgegeven naar HTML, JavaScript, URL's of attributen, is het nodig om deze te ontsluiten (of te 'escapen') om cross-site scripting-attaken te voorkomen. Hierbij worden bepaalde tekens omgezet in andere, veiligere vormen. Gebruik hiervoor functies als...esc_html()esc_js()esc_url()esc_attr()

Een gouden regel is: maak het zo snel mogelijk schoon en ontsluit altijd de betreffende elementen (escape ze).

Internationalisatie en lokalisatie realiseren

Om je plugin beschikbaar te maken voor gebruikers overal ter wereld, is het essentieel om meerdere talen te ondersteunen. Dit wordt gerealiseerd met het internationaleizeringssysteem (internationalization framework) van WordPress.

Eerst moet je rondom alle strings die moeten worden vertaald een bepaald format gebruiken.__()(Gebruikt voor teruggegeven waarden) of_e()(Dit wordt gebruikt voor directe weergave van een functie, en specificatie van waar de functie is gedefinieerd in de kop van het plugin.)Text Domain

$greeting = __( ‘Hello, world!’, ‘my-first-plugin’ );
_e( ‘Settings saved successfully!’, ‘my-first-plugin’ );

Vervolgens scann je de code van het plugin met een tool als Poedit om een rapport te genereren..pot(Template) File. Vertalers kunnen hiermee een versie van het document in het gewenste taal maken..poEn de gecompileerde versie.moDe bestand moet worden geplaatst in de map met plugins./languages/In de map. Ten slotte, gebruiken…load_plugin_textdomain()De functie laadt de taalpakketten wanneer de plug-in wordt geïnitialiseerd.

Samenvatting

Het ontwikkelen van WordPress-plug-ins is een proces waarbij creativiteit wordt omgezet in functionele oplossingen, gebaseerd op een diepe begrijping van de kernarchitectuur van WordPress. Het begint met het maken van een hoofdbestand met standaardbestandskoppen, vervolgt met het diep integreren in het platform door gebruik te maken van de krachtige systeem voor acties en filters, en eindigt met het bouwen van een veilige beheerinterface via de settings-API. Elke stap volgt de beste praktijken van WordPress. Het stellen van veiligheidseisen (verificatie, schoonmaken van invoer, ontsnappen van gevaarlijke tekens) en internationalisatie als basis voor het ontwikkelen, is cruciaal voor het maken van professionele, betrouwbare en breed toepasbare plug-ins. Door deze principes en stappen te volgen, kunnen ontwikkelaars met vertrouwen hoogkwalitatieve WordPress-plug-ins bouwen die voldoen aan de verschillende behoeften van gebruikers.

Veelgestelde vragen (FAQ)

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

Om een WordPress-plugin te ontwikkelen, zijn basiskennis van de PHP-programmeringstaal vereist, aangezien plugins voornamelijk in PHP worden geschreven. Daarnaast is een begrip van HTML, CSS en JavaScript nodig om de front-end-weergave en interactie te kunnen beheersen. Het is belangrijk om de basisarchitectuur van WordPress te begrijpen, zoals thema's, plugins, hooks en de werking van cycli. Het is ook handig om de basisoperaties van de MySQL-database onder de knie te hebben, zodat je met de data in de plugin kunt werken.

Hoe debug je een WordPress-plugin dat je aan het ontwikkelen bent?

ActiverenWP_DEBUGDit is de eerste stap in het afstellen (debuggen) van de plugin.wp-config.phpIn het bestand wordt…define( ‘WP_DEBUG’, true );Instellen alstrueDit zal PHP-fouten, waarschuwingen en berichtgeving weergeven op de pagina. Daarnaast kan dit ook worden gebruikt om…error_log()De functie schrijft aangepaste debug-informatie in het foutenlog van de server. Voor meer complexe debugging-procedures kan je gebruikmaken van speciale debug-plugins of de debugging-mogelijkheden van een IDE (Integrated Development Environment).

Hoe voorkom je dat je bij het ontwikkelen van een plugin conflicten krijgt met andere plugins?

Om conflicten te voorkomen, moet je zorgen dat je plugin-code goed is geïncapsuleerd. Voeg unieke prefixen toe aan alle functies, klassen, variabelen en optie-namen; gebruik bijvoorbeeld afkortingen of namen die specifiek refereren aan je plugin. Door de code te organiseren in klassen met behulp van object-orienteerde programming (OOP), kun je de globalen namenruimte beter beheersen. Gebruik globalen variabelen met voorzichtigheid en zorg ervoor dat je hook-callback-functies een duidelijke prioriteit hebben. Voer voor het publiceren uitgebreide tests uit in een omgeving waarbij verschillende populaire plugins worden gebruikt.

Hoe stuur je een ontwikkeld plugin op naar de officiële plugin-directory?

Allereerst moet je ervoor zorgen dat je plugin volledig voldoet aan de officiële ontwikkelingsstandaarden en -gidsen van WordPress. Daarna moet je een account aanmaken op WordPress.org en je gecompresseerde pluginbestand indienen via de “Developers”-pagina. Na de indiening zal het review-team de plugin controleren op kwaliteit van het code, veiligheid en de licentieovereenkomst (die moet compatibel zijn met GPL zijn). Als de plugin wordt goedgekeurd, wordt het opgenomen in de officiële WordPress-plugincatalogus en kun je een SVN-repository gebruiken om je code te beheren en updates te distribueren.