Van nul beginnen: bouw je eerste WordPress-plugin
Het ontwikkelen van WordPress-plug-ins is een belangrijke manier om de kernfuncties van WordPress uit te breiden. Door plug-ins te maken, kunnen ontwikkelaars extra functies toevoegen aan een website zonder dat ze de thema's of de kernbestanden hoeven aan te passen. Dit zorgt voor de onafhankelijkheid en portabiliteit van de functies. Een standaardplug-in bestaat meestal uit een hoofdPHP-bestand, optionele resourcebestanden (zoals CSS en JavaScript) en een taalpakket. Het begrijpen van de basisstructuur van een plug-in is de eerste stap naar succesvolle ontwikkeling.
De basisstructuur en het maken van een WordPress-plugin
De meest fundamentele vorm van een plugin is een component die wordt geplaatst…/wp-content/plugins/De map in de map. In deze map moet ten minste één hoofd-PHP-bestand zijn opgenomen. De commentaren aan het begin van dit bestand dienen om WordPress te informeren over de details van het plugin.
Schrijven van commentaren in de kop van een plugin
Elke hoofdfile van een plugin moet beginnen met een specifiek PHP-commentaarblock, dit wordt de plugin-head genoemd. WordPress gebruikt deze informatie om je plugin in de lijst met plugins in het beheerpaneel te herkennen en weergeven. Een standaard commentaarblock voor de plugin-head is als volgt:
Aanbevolen leesmateriaal Diepgravend inzicht in het ontwikkelen van WordPress plugins: van nul tot efficiënte personalisatie。
<?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
*/ Hieronder valt ook:Plugin NameHet is vereist dat deze velden worden ingevuld; de overige velden zijn optioneel. Om de volledigheid en professionaliteit van het plugin te bewaren, wordt echter aanbevolen om zoveel mogelijk alle velden in te vullen.Text DomainDit wordt gebruikt voor internationalisatie en vormt de basis voor de vertaling van toekomstige plugins.
Maak een hoofdbestand en een map voor het plugin.
Allereerst:/wp-content/plugins/Maak een nieuwe map in de directory, bijvoorbeeldmy-first-pluginVervolgens maak je in die map de hoofdPHP-fail, die meestal dezelfde naam heeft als de map.my-first-plugin.phpVoeg de bovenstaande commentaar toe aan het bestand, sla het op en je kunt het vervolgens zien en activeren op de “Plugins”-pagina in het WordPress-administratiepaneel. Op dit moment heeft het nog geen enkele functionaliteit.
Core development concepts: Action hooks and filters
De pluginarchitectuur van WordPress is gebaseerd op het “hook”-systeem, wat de brug vormt tussen plugins en het core-systeem van WordPress. Er zijn twee belangrijke types hooks: action hooks en filter hooks.
Action hooks begrijpen en gebruiken
Action hooks bieden je de mogelijkheid om zelfgemaakte PHP-code uit te voeren op bepaalde tijdstippen of wanneer bepaalde evenementen plaatsvinden. Je kunt ze dus gebruiken om specifieke taken of berichtgeving automatisch te triggeren.add_action()De functie “monteert” je eigen functie op een bepaald punt in het programma. Als voorbeeld: het automatisch toevoegen van een tekstfragment aan het eind van een artikelinhoud.
function myplugin_add_footer_text( $content ) {
if ( is_single() ) {
$content .= '<p>Fijn dat je het hebt gelezen!</p>';
}
return $content;
}
add_filter( 'the_content', 'myplugin_add_footer_text' ); Let op: in dit voorbeeld worden filter-hooks gebruikt om de inhoud te bewerken. Een typisch voorbeeld van een actie-hook is het toevoegen van een menu in de beheeromgeving.
Aanbevolen leesmateriaal WordPress-pluginontwikkeling vanaf nul: bouw je eerste eigen functie。
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置',
'我的插件',
'manage_options',
'myplugin-settings',
'myplugin_settings_page'
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' ); Hier,add_action()convertFunctionmyplugin_add_admin_menuBinden aanadmin_menuDeze actie-hook wordt door WordPress gebruikt tijdens het bouwen van het achtergrondmenu.
Filterhooks begrijpen en gebruiken
Filter hooks worden gebruikt om de door WordPress gecreëerde data te bewerken tijdens de verwerking. Je kunt ze dus inzetten om bepaalde gegevens aan te passen of te veranderen.add_filter()Er is een functie beschikbaar om je eigen functie te 'monteren' (te integreren in het systeem). De filterfunctie ontvangt een invoerwaarde, verwerkt deze en moet de gewijzigde waarde teruggeven. Als voorbeeld: het gewijzigen van de titel van een artikel.
function myplugin_modify_title( $title ) {
return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' ); De filters zijn zeer krachtig en worden veel gebruikt om resultaten van zoekvragen, tekstinhoud, waarden van opties en bijna alle door WordPress genereerde gegevens te bewerken.
Een instellingenpagina en opties toevoegen aan een plugin
Een goed uitgerust plugin biedt gebruikers meestal configuratieopties aan. WordPress beschikt over een settings-API waarmee optiepagina's veilig en standaardiserd kunnen worden gemaakt.
Maak een beheermenu en -pagina
Allereerst moet je gebruikmaken van...add_menu_page()或add_options_page()We gebruiken functies als ‘add’ om een beheerpagina toe te voegen. Meestal worden deze acties gemonteerd (‘mounted’) op een bepaalde plek in het systeem.admin_menuOp de haak, zoals in het voorgaande voorbeeld te zien is. Hierbij…myplugin_settings_pageDit is een callback-functie die wordt gebruikt om de HTML-content van de instellingenpagina te renderen.
Registreer opties met de Settings API
De Settings API biedt een veilige manier om instellingen te registreren, te verifiëren en op te slaan. De belangrijkste stappen hiervoor zijn:register_setting()Registreer een instellingengroep en gebruik deze.add_settings_section()Voeg een instellingenblok toe en gebruik deze.add_settings_field()Voeg specifieke instellingen toe.
Aanbevolen leesmateriaal De volledige gids voor het ontwikkelen van WordPress-plug-ins: van beginner tot expert, met praktische tutorials。
function myplugin_settings_init() {
// 注册一个设置
register_setting( 'myplugin_settings', 'myplugin_options' );
// 添加一个设置区块
add_settings_section(
'myplugin_section_general',
'通用设置',
'myplugin_section_general_cb',
'myplugin-settings'
);
// 添加一个设置字段
add_settings_field(
'myplugin_field_text',
'欢迎语',
'myplugin_field_text_cb',
'myplugin-settings',
'myplugin_section_general',
[ 'label_for' => 'myplugin_field_text' ]
);
}
add_action( 'admin_init', 'myplugin_settings_init' ); Vervolgens moet je de corresponderende callback-functies schrijven.myplugin_section_general_cb和myplugin_field_text_cbOutput de HTML-invulvelden voor de beschrijving van het blok en de velden. Tot slot, inmyplugin_settings_pageIn de functie wordt dit gebruikt.settings_fields()和do_settings_sections()Een functie die het hele formulier weergeeft.
Pluginbeveiliging en beste praktijken
Tijdens het ontwikkelen van plugins is veiligheid een belangrijke overweging. Een onveilige plugin kan het hele website in gevaar brengen.
Datavalidatie, -reiniging en -ontsnapping
Vertrouw nooit op de invoer van gebruikers of op gegevens uit de database. Bij het verwerken van invoer (bijvoorbeeld $_POST of $_GET) moet deze altijd worden gevalideerd en gereinigd. WordPress biedt tal van functies hiervoor.sanitize_text_field(), intval(), wp_kses()Etc. Wanneer gegevens worden uitgevoerd naar HTML of JavaScript, is het nodig om deze te ontsluiten (of te ‘escape’) met functies als…esc_html(), esc_attr(), esc_js()和wp_json_encode()。
// 接收、清理并保存数据
$user_input = sanitize_text_field( $_POST['my_field'] );
update_option( 'my_option', $user_input );
// 安全地输出数据
echo esc_html( get_option( 'my_option' ) ); Het gebruik van niet-CE-middelen en het uitvoeren van toegangscontroles
Voor alle achtergrondformulierindelingen of AJAX-verzoeken die worden gestart door plugins, moet WordPress' nonce worden gebruikt om de legitiemheid en unieke aard van het verzoek te verifiëren, om zo aanvallen met gesimuleerde cross-site-verzoeken (CSRF) te voorkomen.current_user_can()De functie controleert of de huidige gebruiker de vereiste toegang heeft om deze actie uit te voeren.
// 在表单中输出 nonce 字段
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );
// 在处理请求时验证 nonce 和权限
function myplugin_handle_form_submit() {
if ( ! isset( $_POST['myplugin_nonce'] ) ||
! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ||
! current_user_can( 'manage_options' ) ) {
wp_die( '安全校验失败。' );
}
// ... 安全地处理数据 ...
} Samenvatting
Het ontwikkelen van WordPress-plug-ins is een systeematische procedure die begint met het begrijpen van de basisstructuur en het hook-mechanisme, vervolgt met het implementeren van functies en het creeren van een gebruikersinterface, en eindigt met het naleven van strenge veiligheidsregels. Door de codingstandaarden van WordPress te volgen en het API te gebruiken dat WordPress biedt, kunnen ontwikkelaars krachtige, veilige en gemakkelijk te onderhouden plug-ins bouwen. Het belangrijkste is om zelfgemaakte functies naadloos te integreren in het levenscyclus van WordPress met behulp van action- en filter-hooks, en om de Settings API te gebruiken voor het beheersen van instellingen. Daarnaast moet altijd worden gekeken naar datavalidatie, -reiniging, -ontslag en toegangscontrole.
Veelgestelde vragen (FAQ)
Hoe debug ik mijn WordPress-plugin ###?
Het eerste stap is om de debug-modus van WordPress in te schakelen.wp-config.phpIn het bestand wordt…WP_DEBUGDe constante is ingesteld op...trueDe PHP-fouten, waarschuwingen en berichtgeving worden direct op de pagina weergegeven. Voor meer complexe debugging-mogelijkheden kan…error_log()De functie registreert de informatie in het foutenlog van de server, of gebruikt speciale debugging-plug-ins om details over queries, hooks en dergelijke te bekijken.
Hoe kan mijn plugin worden uitgerust met multilingual support?
WordPress gebruikt het GNU gettext-framework voor internationaalization (internationalisering). Eerst moet dit in de commentaren bovenin het plugin worden gedefinieerd.Text DomainIn de plugin-code moet voor alle strings die moeten worden vertaald gebruik worden gemaakt van een specifieke methode of framework.__()Vertalen:_e()Vertaal het naar het Nederlands en geef het direct op. Vervolgens gebruik je een tool als Poedit om strings uit de broncode van het plugin te halen en te genereren..potTemplatebestanden; voor elke taal worden vervolgens aparte bestanden gecreëerd..poEn de gecompileerde versie.moDe bestanden worden vervolgens in het plugin geplaatst./languages/Catalogus.
Hoe voorkom je dat de namen van klassen in een plugin niet in conflict komen met andere plugins?
Om conflicten met namen van klassen, functies of constanten te voorkomen, is het beste om namenruimtes (namespace) te gebruiken of unieke prefixen te toevoegen aan alle identificatoren. Sinds PHP 5.3 wordt het gebruik van namenruimtes aanbevolen. Hier is een voorbeeld:namespace MyPluginAdmin;Als je rekening houdt met compatibiliteit, moet je een prefix gebruiken. Het prefix moet voldoende uniek zijn; bijvoorbeeld een combinatie van de afkortingen van de bedrijfsnaam en de namen van de plugins:function acme_myplugin_init() {}De klassenaam wordt als volgt gedefinieerd:class Acme_MyPlugin_Admin_Settings {}。
Hoe voeg ik een aangepaste database-tabel toe aan mijn plugin?
Het is het beste om een aangepaste tabel te maken wanneer de plugin is geactiveerd. Je kunt de code om de tabel te maken opslaan in een functie en deze vervolgens gebruiken wanneer de plugin wordt opgeroepen.register_activation_hook()Je gebruikt een functie om dit te registreren. Binnen deze functie worden de benodigde stappen uitgevoerd.dbDelta()Deze functie wordt gebruikt om de tabelstructuur veilig te creëren of bij te werken, en vereist een zeer specifieke SQL-indeling. Wees er dus zeker van dat je de juiste SQL-commando's gebruikt.$wpdb->prefixVoeg een siteprefix toe aan de tabellenaam om ondersteuning te bieden voor een multi-site-omgeving.
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.
- Hoe kies je en maak je je eigen perfecte WordPress-thema?
- WordPress-pluginontwikkelingsgids: van nul tot één: maak je eerste eigen plugin
- Werken als WordPress-pluginontwikkelaar: een volledig handboek van nul tot één
- Van nul naar één: een volledige handleiding en praktische tips voor het bouwen van professionele websites met WordPress.
- Volledig handboek voor het ontwikkelen van WordPress plugins: van het begin tot de volmaakte beheersing van professionele uitbreidingen