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.
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.
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' => '访客',
), $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_page 或 add_menu_page Voeg de betreffende functies toe als menu-item en pagina in het beheerpaneel. Vervolgens gebruik je deze functies… register_setting、add_settings_section 和 add_settings_field Gebruik functies als `define` om je instellingsopties te definiëren.
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() {
?>
<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>
<?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_html、esc_url、sanitize_text_field Verwerk de uitstoot en gebruik dit. wp_verify_nonce 和 check_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_transient, get_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.
De volgende stap, wat moeten we als volgende doen?
Voor meer informatie en praktische kennis
De volgende content is relevant voor het onderwerp van dit artikel en is geschikt voor verder lezen. Het kan vaak effectief zijn om eerst het artikel te lezen dat het dichtst bij uw huidige vraagstuk staat en vervolgens geleidelijk aan artikelen over aanverwante onderwerpen te bekijken.
- WordPress-pluginontwikkelingsgids: van nul tot één: maak je eerste eigen plugin
- Werken als WordPress-pluginontwikkelaar: een volledig handboek van nul tot één
- Volledig handboek voor het ontwikkelen van WordPress plugins: van het begin tot de volmaakte beheersing van professionele uitbreidingen
- WordPress-pluginontwikkeling: van het begin tot de volmaaktheid: bouw je eerste eigen plugin
- Van nul naar één: een volledig handboek voor het stappen voor stappen ontwikkelen van je eerste WordPress-plugin