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

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

WordPress-pluginontwikkelingsomgeving en basisvoorbereidingen

Voordat u met het schrijven van code begint, is een stabiele en geisoleerde ontwikkelomgeving de eerste stap naar succes. Dit beschermt niet alleen uw live-website tegen de invloed van testcode, maar maakt ook het afstelproces soepeler.

Het opzetten van een lokale ontwikkelomgeving.

Het wordt aanbevolen om lokale serversoftwarepakketen te gebruiken, zoals Local by Flywheel, XAMPP of MAMP. Met deze tools kunt u in één stap een compleet omgeving instellen dat PHP, MySQL en Apache/Nginx bevat. Zorg ervoor dat uw PHP-versie overeenkomt met de vereisten van de WordPress-versie die u wilt gebruiken; het wordt meestal aanbevolen om PHP 7.4 of een hogere versie te gebruiken voor betere prestaties en meer veiligheidsvoorzieningen.

Maak het hoofdbestand van het plugin.

Elk WordPress-plugin moet een hoofdbestand hebben, dat de entreepunt van het plugin is. Dit bestand moet worden opgeslagen in een specifieke map binnen het WordPress-installatiepad. wp-content/plugins De plugin moet worden opgeslagen in een aparte map binnen de directory, en moet worden genoemd met een unieke naam. Als u bijvoorbeeld een plugin wilt maken voor groeten, kunt u een map met de naam “Groeten” maken. my-first-plugin De map en een hoofdbestand maken in die map. my-first-plugin.php

Aanbevolen leesmateriaal Ultimate Guide to WordPress Plugin Development: Build Commercial-Grade Plugins from Scratch

De opening van deze bestand moet een specifieke commentaar met plugin-informatie bevatten, waardoor WordPress de basisgegevens van de plugin kan krijgen. Hier is een eenvoudig voorbeeld:

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:       这是一个用于学习插件开发的简单插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

Core structure van plugins en het hook-mechanisme

Het kernpunt van het ontwikkelen van WordPress-plug-ins is om het systeem van “hooks” (haakjes) te begrijpen en te gebruiken. Hooks bieden de mogelijkheid om uw code op specifieke momenten in de kernprocessen van WordPress in te voegen, waardoor u functies kunt veranderen of toevoegen zonder de kernbestanden te hoeven aanpassen.

Het begrijpen van action-hooks en filter-hooks

Er zijn voornamelijk twee categorieën hangijzers (hooks): acties (Actions) en filters (Filters). Hangijzers van type actie uitvoeren uw code wanneer een bepaald evenement plaatsvindt, bijvoorbeeld wanneer een artikel wordt gepubliceerd of wanneer de beheeromgeving wordt geladen. add_action() Er zijn functies beschikbaar voor het mounten (het toevoegen van data aan een object of systeem). Filterhooks worden gebruikt om gegevens te bewerken; ze bieden de mogelijkheid om de waarden van gegevens te veranderen voordat deze naar de database of de browser worden gestuurd. add_filter() Een functie die wordt gebruikt om iets te mounten.

Als je bijvoorbeeld wilt dat er een aangepaste tekst wordt weergegeven in de voetnoot van een website-pagina, kun je dit doen met... wp_footer Deze actie-hook:

function myplugin_add_footer_text() {
    echo '<p style="text-align:center;">Fijn dat je deze website gebruikt!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' );

Een pagina voor plug-inbeheer maken

Veel plugins vereisen een instellingenpagina in het WordPress-beheerpaneel. Dit wordt meestal gerealiseerd door de plugin te koppelen (of te ‘mounten’) aan een specifieke locatie in het beheerpaneel. admin_menu Dit wordt gerealiseerd met action-hooks. U moet een functie definiëren en deze functie gebruiken om de gewenste acties uit te voeren. add_menu_page()add_options_page() Maak gebruik van functies om de pagina te registreren, en definieer een andere functie om de HTML-inhoud van de pagina uit te geven.

Aanbevolen leesmateriaal Van nul af: Een volledig handboek en praktische handleiding voor het ontwikkelen van WordPress plugins

function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 权限
        'myplugin-settings', // 菜单别名
        'myplugin_render_settings_page' // 用于显示页面内容的函数
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

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

Implementeren van plugin-functies en dataverwerking

Een compleet plugin moet meestal omgaan met gebruikersinvoer, instellingen opslaan en communiceren met een database. WordPress biedt een krachtig API om deze processen te versimpelen.

De opties worden gespeeld op met behulp van de API voor instellingen.

Het handmatig verwerken van formulierinzendingen en database-operaties is zowel tijdrovend als onveilig. WordPress biedt via zijn API een gestandaardiseerde en veilige manier om instellingen te registreren, te verifiëren en op te slaan. Hiervoor worden drie kernfuncties gebruikt:register_setting()add_settings_section()add_settings_field()

Het volgende voorbeeld toont hoe je een tekstveld kunt registreren en instellen:

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_settings_init() {
    register_setting( 'myplugin_settings_group', 'myplugin_greeting_text' );

add_settings_section(
        'myplugin_section',
        '基础设置',
        null,
        'myplugin-settings'
    );

add_settings_field(
        'myplugin_field_greeting',
        '问候语',
        'myplugin_field_greeting_render',
        'myplugin-settings',
        'myplugin_section'
    );
}
add_action( ‘admin_init’, ‘myplugin_settings_init’ );

function myplugin_field_greeting_render() {
    $value = get_option( ‘myplugin_greeting_text’, ‘你好,世界!’ );
    echo ‘<input type=“text” name=“myplugin_greeting_text” value=“’ . esc_attr( $value ) . ‘” />’;
}

Een aangepaste database-tabel maken

Voor plugins die complexe relatiegegevens moeten opslaan, is het mogelijk dat u een aangepaste database-tabel moet maken. Dit gebeurt meestal wanneer de plugin wordt aktiveerd. U moet een functie schrijven en deze koppelen aan de registratie- en activeringshook van WordPress. dbDelta() Deze functie wordt gebruikt om SQL-opdrachten uit te voeren voor het creeren of bijwerken van tabellen, en kan intelligente manieren bedenken om veranderingen in de structuur van de tabellen te verwerken.

Allereerst moet u de activatie-hook registreren in uw hoofdpluginbestand:

register_activation_hook( __FILE__, ‘myplugin_create_database_table’ );

Vervolgens wordt de functie gedefinieerd voor het maken van een tabel:

Aanbevolen leesmateriaal WordPress-pluginontwikkelingsgids: van nul beginnen met het maken van je eerste plugin

function myplugin_create_database_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . ‘myplugin_data’;
    $charset_collate = $wpdb->get_charset_collate();

$sql = “CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        name varchar(100) NOT NULL,
        email varchar(100) NOT NULL,
        created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
        PRIMARY KEY (id)
    ) $charset_collate;”;

require_once( ABSPATH . ‘wp-admin/includes/upgrade.php’ );
    dbDelta( $sql );
}

Pluginbeveiliging, internationalisering en voorbereiding op publicatie

De geïmplementeerde plugins moeten worden versterkt op het gebied van security, worden gelocaliseerd naar verschillende talen en worden op een gestructureerde manier gepackt, voordat ze veilig kunnen worden geleverd aan gebruikers of kunnen worden ingediend in de officiële catalogus.

Veilige best practices implementeren

Veiligheid is van het hoogste belang bij het ontwikkelen van plugins. Verifieer altijd de invoer van gebruikers (controleer de formatie) en reinig deze invoer (verwijder eventuele schadelijke onderdelen). Gebruik de functies die WordPress biedt voor deze doeleinden. esc_html()esc_attr()sanitize_text_field() Deze tekst bevat instructies voor het ophalen of verwerken van data. Bij het uitvoeren van een databasequery worden bepaalde methoden of technieken gebruikt. $wpdb->prepare() Methoden om SQL-injectieaanvallen te voorkomen. Daarnaast wordt... current_user_can() Controleer de gebruikersrechten om zeker te stellen dat alleen geautoriseerde gebruikers gevoelige acties kunnen uitvoeren.

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.

Internationalisatie van plugins realiseren

Om uw plugin beschikbaar te maken voor gebruikers overal ter wereld, is internationaleisering (i18n) nodig. Dit betekent dat alle teksten die worden gebruikt door de gebruiker niet rechtstreeks in de code mogen worden opgenomen, maar moeten worden omhuld met de vertaalfuncties van WordPress. De meest gebruikelijke functie hiervoor is… () Gebruikt voor het weergeven van de vertaling.() Om de vertaalde tekst te verkrijgen, en ook... _e() Gebruikt voor de directe weergave van de vertaling.

In uw code moet dit zo worden geschreven:

$greeting = __( ‘你好,世界!’, ‘my-first-plugin’ );
echo esc_html( $greeting );

_e( ‘设置已保存。’, ‘my-first-plugin’ );

Let op: de tweede parameter in de vertaalfunctie, “Text Domain”, moet overeenkomen met de definitie in de commentaren bovenin het plugin. Text Domain Volledig overeenkomstig. Daarna kunt u tools gebruiken zoals Poedit om de vertaling te genereren. .pot Templatebestanden, bedoeld voor vertalers om mee te werken .po.mo Vertaalde bestand:

Samenvatting

Het ontwikkelen van WordPress-plug-ins is een proces waarbij creativiteit wordt omgezet in functionele mogelijkheden, en dit is gebaseerd op een diepe begrip van de kernarchitectuur van WordPress, met name het hook-systeem. Van het opzetten van de omgeving, het schrijven van de belangrijkste bestanden, het gebruiken van action- en filter-hooks, tot het verwerken van data met de setting-API en database-API: ieder stap volgt een duidelijk patroon. Uiteindelijk kan uw plugin, dankzij strenge veiligheidsmaatregelen en volledige internationale ondersteuning, worden veranderd van een persoonlijk project in een product dat beschikbaar is voor anderen. Nadat u deze basisprincipes onder de knie hebt, kunt u zich verder ontwikkelen in complexere gebieden, zoals het aanpassen van artikeltypen, het integreren van REST-API's en het ontwikkelen van Gutenberg-blokken, waardoor u nog krachtigere en modernere WordPress-uitbreidingen kunt bouwen.

Veelgestelde vragen (FAQ)

Is het vereist om vloeiend PHP te beheersen om een WordPress-plugin te ontwikkelen?

Ja, PHP is de belangrijkste programmeeringstaal voor het ontwikkelen van WordPress en zijn plugins. Je moet de basisgrammatiek van PHP, functies, arrays en concepten van objectgericht programmeren beheersen. Het is ook essentieel om een basiskennis van HTML, CSS en JavaScript te hebben, omdat je met de front-end-weergave en interactie moet werken.

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

Het wordt aanbevolen om de debug-modus van WordPress te activeren. wp-config.php In het bestand wordt… WP_DEBUG De constante is ingesteld op... trueDit zorgt ervoor dat alle PHP-fouten, waarschuwingen en berichtgeving op het scherm worden weergegeven. Daarnaast is het ook mogelijk om… error_log() De functie schrijft de fouteninformatie op in het foutenlog van de server, of gebruikt de ontwikkelaarstools van de browser voor het debuggen van JavaScript-code op de frontkant (frontend).

Hoe voorkom je dat de namen van functies in een plugin niet in conflict komen met die van andere plugins?

Om conflicten met functionnamen, klassenamen of constantennamen te voorkomen, moet u altijd een unieke prefix gebruiken. De beste praktijk is om de naam van het plugin of een afkorting hiervan als prefix te gebruiken. Als uw plugin bijvoorbeeld “Awesome Slider” heet, kunt u een prefix als ‘aws’ gebruiken, waardoor de namen van functies, klassen of constanten bijvoorbeeld ‘awsSliderFunction’, ‘awsSliderClass’ of ‘awsSliderConstant’ worden. as_awesome_slider_ Als prefix voor alle zelfgemaakte functies. Voor de namen van klassen moet hetzelfde principe worden gevolgd.

Kan je betaalde plugins indienen in de officiële WordPress-plugincatalogus?

Nee, dat is niet mogelijk. Het officiële WordPress-pluginverzeichnis accepteert alleen plugins die voldoen aan de GPL-licentie en volledig gratis zijn. Als u een betaalde (geavanceerde) plugin ontwikkelt, moet u deze op uw eigen website distribueren en verkopen. Er zijn echter veel betaalde plugins die een gratis versie aanbieden met basisfuncties, die kunnen worden ingediend in het officiële verzeichnis als promotie- en testmogelijkheid voor de geavanceerde versie.