Waarom zou je willen leren hoe je plugins voor WordPress ontwikkelt?
WordPress is het populairste content management systeem ter wereld, en de grote schaalbaarheid van het systeem is te danken aan zijn pluginarchitectuur. Het leren om plugins te ontwikkelen betekent dat u zich niet meer beperkt hoeft aan de functies van bestaande plugins, maar dat u oplossingen kunt ontwikkelen die volledig aansluiten bij de behoeften van het project. Of u nu unieke websitefuncties maakt voor een specifieke klant of een commerciële plugin ontwikkelt voor gebruikers wereldwijd: het beheersen van deze techniek biedt u enorme flexibiliteit en commerciële waarde.
Door uw eigen plugins te ontwikkelen, kunt u de kwaliteit van het codewerk garanderen en vermijden dat u te maken krijgt met compatibiliteitsproblemen of beveiligingslekken die kunnen optreden bij het gebruik van derde-partij-plugins. Daarnaast helpt het dieper inzien in het weringsmechanisme van plugins u om de werking van het core van WordPress beter te begrijpen, waardoor u een meer geavanceerde WordPress-developer wordt. Van eenvoudige functionaliteiten tot complexe integraties met SaaS-apps: het ontwikkelen van plugins vormt de basis voor het realiseren van al deze mogelijkheden.
Een ontwikkelingsomgeving opzetten en de eerste plugin maken
Voordat je met het schrijven van code begint, is een geschikte ontwikkelomgeving van belang. Het wordt aanbevolen om lokale ontwikkelingshulpmiddelen te gebruiken zoals Local by Flywheel, XAMPP of MAMP, die een lokale serveromgeving met PHP, MySQL en Apache/Nginx snel kunnen opzetten. Daarnaast kan een professionele code-editor, zoals VS Code of PHPStorm, de ontwikkelingsefficiëntie aanzienlijk verbeteren.
Creëer de basisbestanden voor het plugin.
Een van de simpelste WordPress-plug-ins bevat maar één hoofd-PHP-bestand. Eerst moet je naar het installatieverkeer van WordPress gaan…wp-content/pluginsIn de map maak je een nieuwe map, bijvoorbeeld...my-first-plugin。
In deze map moet je een hoofdbestand maken, dat meestal de naam van het plugin heeft.my-first-plugin.phpElk plugin moet in het begin van het bestand een standaardcommentaar met informatie over het plugin bevatten. Dit is nodig voor WordPress om het plugin te herkennen.
<?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
*/ Na het opslaan van het bestand, ga je naar de “Plugins”-pagina in het WordPress-administratiepaneel. Hier moet je de nieuwe plugin zien staan in de lijst met plugins. Hoewel de plugin op dit moment nog geen functies heeft, heb je met succes een legitieme WordPress-plugin gecreëerd.
Een simpel functie toevoegen aan een plugin
Laten we een zeer basisfunctie toevoegen aan deze plugin: het toevoegen van een rij met aangepaste tekst in de voetnoot van de website-pagina. We gaan dit realiseren met het hook-systeem van WordPress.
// 在 my-first-plugin.php 的插件头部注释下方添加以下代码
function my_first_plugin_add_footer_text() {
echo '<p style="text-align: center;">Fijn dat je mijn eerste plugin hebt gebruikt!</p>';
}
add_action( 'wp_footer', 'my_first_plugin_add_footer_text' ); Nadat u de plugin hebt aktiveerd en de website bezoekt, ziet u de toegevoegde tekst aan de onderkant van de pagina.add_action()De functie gebruikt de door ons gedefinieerde…my_first_plugin_add_footer_textDe functie is “gemonteerd” op de kern van WordPress.wp_footerOp deze “action hook”. Dit is een van de belangrijkste manieren om functies uit te breiden met WordPress-plug-ins.
De kern van het verhaal: Hooks en Filters
Het begrijpen van hooks is essentieel om vloeiend te kunnen ontwikkelen voor WordPress-plug-ins. Er bestaan twee soorten hooks: Action-hooks en Filter-hooks.
Action-hooks
Action hooks bieden je de mogelijkheid om je eigen code in te voegen op specifieke momenten tijdens het uitvoeren van WordPress. Denk hierbij aan het moment nadat een artikel is gepubliceerd, wanneer een gebruiker inlogt, of voordat de koppen van pagina’s worden geladen. We hebben dit eerder al gebruikt.wp_footerDit is een actie-haak (action hook). Het kan worden gebruikt.add_action()Een functie die zichzelf mountt (dat wil zeggen: die zichzelf als een module toevoegt aan een systeem of applicatie).
// 示例:在文章内容顶部添加一个提示框
function add_disclaimer_to_content( $content ) {
if ( is_single() ) {
$disclaimer = '<div class="notice">Deze tekst is origineel materiaal. Vraag om toestemming om het te reproduceren en verwees naar de bron.</div>';
$content = $disclaimer . $content;
}
return $content;
}
// 注意:这是一个过滤器示例,为了对比,下面会给出动作示例 Een typischer voorbeeld van een actie is het toevoegen van een menu in het beheerderspaneel:
function my_plugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'my-plugin-settings', // 菜单slug
'my_plugin_settings_page' // 用于显示页面内容的函数
);
}
add_action( 'admin_menu', 'my_plugin_add_admin_menu' ); Filter-haken (Filters)
De filter-haken bieden u de mogelijkheid om de gegevens die worden overgedragen tijdens het proces te bewerken. WordPress stuurt de gegevens door middel van filters, en uw functie kan deze gegevens veranderen voordat ze worden teruggestuurd.add_filter()Functie.
// 示例:修改文章摘要的长度
function my_custom_excerpt_length( $length ) {
return 30; // 将摘要字数改为30字
}
add_filter( 'excerpt_length', 'my_custom_excerpt_length' );
// 示例:修改“阅读更多”链接的文本
function my_custom_excerpt_more( $more ) {
return '... <a href="/nl/' . get_permalink() . '/">Lees verder</a>';
}
add_filter( 'excerpt_more', 'my_custom_excerpt_more' ); Constructie van een plugin-architectuur: veiligheid, opties en internationalisatie
Een volwassen plugin vereist een goede architectuur, waaronder veilige verwerking van gegevens, opslag van informatie en ondersteuning voor internationaal gebruik (internationalization).
Beste beveiligingspraktijken
Alle plugins moeten de veiligheidsregels van WordPress naleven. Het belangrijkste principe is: invoer moet worden gevalideerd, geëscapeseerd en gereinigd, en uitvoer moet ook worden geëscapeseerd.
- Validatie: Het controleren of de door de gebruiker ingevoerde gegevens voldoen aan de verwachte formatvereisten (bijvoorbeeld of het een e-mailadres of een cijfer is), voordat de gegevens in de database worden opgeslagen.
- Sanitization: Het verwijderen van onveilige of onnodige karakters uit gebruikersinvoer. WordPress biedt een groot aantal functies voor sanitisatie, zoals…
sanitize_text_field()。 - Escaping: Voordat gegevens worden uitgegeven aan de browser (frontend of backend), moet ervoor worden gezorgd dat deze worden geëscapéerd om XSS-aanvallen te voorkomen.
esc_html()、esc_attr()、esc_url()En andere functies.
// 从表单接收一个标题,清理后保存,输出时转义
$user_input_title = $_POST['title']; // 不安全!
$clean_title = sanitize_text_field( $user_input_title ); // 清理
update_option( 'my_plugin_title', $clean_title ); // 保存
// ... 在另一个地方输出 ...
echo '<h2>'`.esc_html(get_option('my_plugin_title'))`.'</h2>'; // Veilige uitstoot (safe output) Data opslaan met de Option API
Voor eenvoudige instellingen is de WordPress Options API de beste manier om gegevens op te slaan. Het biedt een veilige en gemakkelijke manier om gegevens op te slaan, op te halen en te updaten voor individuele, genoemde objecten.
// 保存或更新一个选项
update_option( 'my_plugin_setting_1', 'some value' );
// 获取一个选项,如果不存在则返回默认值
$setting = get_option( 'my_plugin_setting_1', 'default value' );
// 删除一个选项
delete_option( 'my_plugin_setting_1' ); Het is verstandig om meerdere gerelateerde instellingen op te slaan in een array, om de hoeveelheid database-verzoeken te verminderen.
// 保存一组设置
$settings_array = array(
'api_key' => '12345',
'enable_feature' => true,
'color_scheme' => 'blue'
);
update_option( 'my_plugin_settings', $settings_array );
// 获取设置数组
$saved_settings = get_option( 'my_plugin_settings' );
$api_key = $saved_settings['api_key'] ?? ''; // PHP 7+ 空合并运算符 Plugin internacionalisatie
Om uw plugin beschikbaar te maken voor gebruikers overal ter wereld, is internationalisering (i18n) essentieel. Hiervoor moet u de vertaalfuncties van WordPress gebruiken om alle tekststringen die gericht zijn naar de gebruiker te omringen.
1. Gebruik__()、_e()、_x()Functies als `str.format()` worden gebruikt om strings te vormen door ze te omringen met andere elementen, zoals variabelen, tekst en speciale formatteeringsaanwijzingen.
2. Definieer dit in de commentaren bovenin het plugin.Text Domain(Voorbeeld: my-first-plugin.)
3. Gebruik tools als Poedit om dit te genereren..potTemplatebestanden, bedoeld voor vertalers om mee te werken.po和.moHet document.
// 在插件主文件中加载文本域
function my_plugin_load_textdomain() {
load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'my_plugin_load_textdomain' );
// 在代码中使用翻译函数
$greeting = __( 'Hello, world!', 'my-first-plugin' );
_e( 'This text will be echoed and is translatable.', 'my-first-plugin' ); Je plugin publiceren en distribueren
Nadat de ontwikkeling is afgerond, kunt u het plugin distribueren aan anderen voor gebruik. Voor persoonlijk gebruik of aan klanten is het genoeg om het als ZIP-bestand te verzenden. Als u het plugin wilt indienen in de officiële WordPress-plugincatalogus, moet u zich houden aan strengere regels en vereisten.
Volgens planning wordt dit binnenkort gepubliceerd.
Zorg ervoor dat je code voldoet aan de coderingsnormen van WordPress, dat deze volledig is gedocumenteerd en grondig is getest. Maak eenreadme.txtDe bestand moet in het vereiste format zijn opgesteld, volgens de specificaties van WordPress.org. Het moet informatie bevatten over de beschrijving van het plugin, de installatie-instructies, veel voorkomende vragen, en de update-logboeken. Dit is de bron van de inhoud op de pagina met het overzicht van plugins.
Inleveren op WordPress.org
Registreer een account op WordPress.org en stuur je plugin in voor review. Het review-team zal de veiligheid en de compliance van het codeonderdeel van de plugin controleren.readme.txtNa het voltooien van deze stappen kunt u de code van uw plugin met SVN naar het officiële repository indienen, zodat gebruikers overal ter wereld uw plugin kunnen vinden en installeren. Het onderhouden van een succesvolle plugin vereist regelmatige updates, het oplossen van fouten (bugfixes) en het beantwoorden van vragen van gebruikers.
Samenvatting
Het ontwikkelen van WordPress-plug-ins is een geleidelijk proces dat begint met het begrijpen van de basisstructuur (plug-inbestanden, header-commentaren), vervolgt met het beheersen van de kernextensiemechanismen (action- en filter-hooks), en eindigt met het bouwen van sterke, veilige en internationaleerbare producten (veiligheidspraktijken, option-API, i18n). Door de beste praktijken te volgen en gebruik te maken van de uitgebreide API van WordPress, kunnen ontwikkelaars krachtige en stabiele plug-ins maken die zowel persoonlijke behoeften kunnen vervullen als gebruikers wereldwijd kunnen bedienen. Het voortdurend leren van de nieuwe standaarden en API's van de community is essentieel om de levensduur van de plug-ins te garanderen.
Veelgestelde vragen (FAQ)
Welke voorwaartse kennis is vereist om een WordPress-plugin te ontwikkelen?
Je moet een solide basis in PHP-programmering hebben, omdat plugins voornamelijk in PHP worden ontwikkeld. Daarnaast is een basiskennis van HTML, CSS en JavaScript vereist voor het beheersen van de front-end-weergave en interactie. Het is ook handig om de basisconcepten van de MySQL-database te begrijpen, hoewel de WordPress-API de meeste database-operaties al heeft afgehandeld. Het belangrijkste is dat je een duidelijk begrip hebt van de basisconcepten van WordPress, zoals artikelen, pagina's, categorieën, tags en gebruikersrollen.
Wat is het belangrijkste verschil tussen Action-hooks en Filter-hooks?
Action-hooks worden gebruikt om op een bepaald moment een stuk code uit te voeren. Ze verwachten geen terugkeerwaarde en worden voornamelijk gebruikt om bepaalde acties te triggeren, zoals het toevoegen van een menu, het sturen van een e-mail of het invoegen van een pagina-element. Filter-hooks worden gebruikt om de overgedragen gegevens te bewerken; ze moeten een terugkeerwaarde opgeven (meestal de gewijzigde invoerwaarde), waarmee de tekstinhoud kan worden veranderd, configuratieparameters kunnen worden aangepast of queryresultaten kunnen worden gefilterd. Kortom: action-hooks worden gebruikt om “iets te doen”, terwijl filter-hooks worden gebruikt om “iets te veranderen”.
Hoe debug ik mijn WordPress-plugin?
Allereerst, zorg ervoor dat je opwp-config.phpHet bestand is geopend inWP_DEBUG和WP_DEBUG_LOGDit zal de PHP-fouten en waarschuwingen opslaan in een logbestand.wp-content/debug.logDe inhoud van de bestand wordt niet getoond aan bezoekers. Ten tweede, wordt gebruik gemaakt van…error_log()De functie schrijft aangepaste debug-informatie in het logbestand. Voor complexe logica kan men professionele debug-hulpmiddelen zoals Xdebug gebruiken in combinatie met een IDE voor het opsporen van fouten (bijvoorbeeld door gebruik van breakpoints). Daarnaast is het ook zeer belangrijk om de JavaScript-fouten in de browserconsole te controleren.
Hoe kan mijn plugin worden gecombineerd met een thema of andere plugins?
Om de compatibiliteit te maximaliseren, moet u altijd de officiële WordPress-API's gebruiken (zoals de Option API, Setup API en HTTP API), in plaats van aangepaste PHP-functies. Voeg unieke prefixen toe aan de namen van uw functies, klassen en opties.myplugin_In plaats van algemeen geldend…get_data()Om namenconflicten te voorkomen, moet je bij het toevoegen van hooks de prioriteitsparameters goed instellen zodat de uitvoeringsvolgorde zoals verwacht is. Verander global variables met voorzichtigheid en overweeg het bieden van filters, zodat andere ontwikkelaars de standaardwerking van je plugin kunnen aanpassen.
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.
- Volledig handboek voor het ontwikkelen van WordPress plugins: van het begin tot de volmaakte beheersing van professionele uitbreidingen
- Van nul naar één: een volledig handboek voor het stappen voor stappen ontwikkelen van je eerste WordPress-plugin
- Ultimatumgids voor het ontwikkelen van WordPress-plug-ins: van nul beginnen met het maken van je eerste eigen plug-in
- WordPress-pluginontwikkeling: een volledig handboek voor het bouwen van aangepaste functionaliteiten vanaf nul
- Van nul tot held: een volledige gids en praktische tutorial voor het ontwikkelen van WordPress-plug-ins.