WordPress-pluginontwikkelingsomgeving en basisvoorbereidingen
Voordat je met het schrijven van code begint, is een stabiele en efficiënte ontwikkelomgeving van belang. Dit niet alleen verbetert je ontwikkelingsefficiëntie, maar helpt je ook om de beste praktijken te volgen en de kwaliteit en compatibiliteit van je plugins te garanderen.
Allereerst heb je een lokale WordPress-ontwikkelomgeving nodig. Je kunt deze snel opzetten met tools als XAMPP, MAMP, Local by Flywheel of Docker. Zorg ervoor dat je een versie van PHP (aanraden is PHP 7.4 of later) en MySQL/MariaDB gebruikt die up-to-date is. Een lokale ontwikkelomgeving biedt je de mogelijkheid om vrij te testen en te debuggen, zonder dat dit de online website beïnvloedt.
Ten tweede heb je een code-editor of een integreerde ontwikkelomgeving (IDE) nodig. Visual Studio Code, PhpStorm of Sublime Text zijn allemaal uitstekende keuzes; ze bieden ondersteuning voor syntaxhighlighting, codevoorstellen en mogelijkheden voor het opsporen en oplossen van fouten (debugging). Het is ook aan te raden om enkele tools voor codekwaliteit te installeren, zoals PHP_CodeSniffer, en de coderingstandaarden van WordPress in te stellen, zodat je codestijl overeenkomt met de standaarden van het WordPress-core.
Aanbevolen leesmateriaal Volledig handboek voor het ontwikkelen van WordPress plugins: van het begin tot het bouwen van professionele uitbreidingen。
Ten slotte is het begrijpen van de basisstructuur van WordPress-plug-ins de eerste stap. Een zeer simpel plugin vereist slechts één PHP-bestand, waarin de specifieke plugin-informatie wordt opgenomen in commentaren aan het begin van het bestand. Dit bestand vormt de ingangspoort voor de plugin; WordPress gebruikt deze informatie om de plugin te herkennen en te beheren.
Maak je eerste pluginbestand.
Laten we beginnen met het maken van een zeer eenvoudige “Hello World”-plugin. Dit proces zal je helpen om de basis van plugins te begrijpen en hoe WordPress plugins herkent.
Allereerst, in de map waar je WordPress-installatie zich bevindt:wp-content/pluginsIn de map moet je een nieuwe map maken. De naam van de map moet uniek en beschrijvend zijn, en moet bestaan uit kleine letters en strepen. Voorbeeld:my-first-plugin。
In deze map moet je een hoofd-PHP-bestand maken. De naam van het bestand is meestal dezelfde als de naam van de map.my-first-plugin.phpOp de top van deze bestand moet je een commentaar toevoegen met de plugin-headline volgens de WordPress-standaarden. Dit is de “identiteitskaart” van de plugin en bevat informatie als de naam, beschrijving, versie en ontwikkelaar. Zonder dit commentaar kan WordPress de plugin niet vinden in de lijst met beschikbare plugins in de backend.
Hieronder staat een voorbeeld van een zeer basist plugin-bestand:
Aanbevolen leesmateriaal Vanaf nul: waarom je zou kiezen voor het ontwikkelen van WordPress plugins?。
<?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
*/
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit; // 如果ABSPATH未定义,则退出
} Na het opslaan van deze bestand, log in je in bij het WordPress-administratiepaneel en ga naar de pagina “Plug-ins”. Hier moet je “Mijn eerste plugin” zien staan in de lijst met plug-ins. Je kunt het nu activeren, maar het doet nog niets. De code in…if ( ! defined( ‘ABSPATH’ ) )Controle is een belangrijke beveiligingsmaatregel om te voorkomen dat gebruikers je pluginbestanden rechtstreeks via een URL kunnen bereiken, en om te zorgen dat de code alleen in een WordPress-omgeving wordt uitgevoerd.
Add core functionality to the plugin.
Een actieve plugin moet bepaalde acties uitvoeren. In WordPress worden deze acties voornamelijk gerealiseerd met Action Hooks en Filter Hooks. Dit zijn de fundamenten van de WordPress-pluginarchitectuur en bieden de mogelijkheid om op specifieke momenten je eigen code in te voegen of gegevens te bewerken.
Maak gebruik van action-hooks om notificaties in het beheerpaneel te toevoegen.
Action hooks bieden je de mogelijkheid om je eigen functies uit te voeren op specifieke momenten tijdens het uitvoeren van WordPress (bijvoorbeeld nadat de initialisatie is voltooid, wanneer de koppen van pagina's worden geladen of wanneer een artikel wordt gesaved). Laten we een simpel voorbeeld toevoegen: we willen een welkomstbericht weergeven aan de bovenkant van het WordPress-beheerpaneel.
We zullen dit gebruiken.admin_noticesDeze actie-hook: In eerste instantie moet je een functie maken die HTML-content genereert, en vervolgens kun je deze functie gebruiken...add_action()De functie “monteert” deze andere functie op een bepaald punt (of ‘haak’) in het systeem.
Voeg de volgende code toe in je hoofdpluginbestand:
/**
* 在管理后台显示欢迎通知
*/
function myfp_display_admin_notice() {
?>
<div class="notice notice-success is-dismissible">
<p>Welkom bij het gebruik van “Mijn eerste plugin”! De plugin is met succes geactiveerd.</p>
</div>
<?php
}
// 将函数挂载到 admin_notices 动作钩子
add_action( 'admin_notices', 'myfp_display_admin_notice' ); Sla je instellingen op en vernieuw de WordPress-beheerder. Op de bovenste helft van de pagina moet je een groen succesvenster zien. Let op de namen van de functies.myfp_display_admin_noticeEen prefix is gebruikt.myfp_(Dit is afgeleid van de afkorting van de pluginnaam.) Dit is om conflicten met de namen van functies in andere plugins of thema's te voorkomen; dit is een namigingsschema dat moet worden gevolgd.
Aanbevolen leesmateriaal Volledig handboek voor het ontwikkelen van WordPress plugins: van nul tot een hoogkwalitatieve uitbreiding voor WordPress。
Het inhoud van een artikel bewerken met behulp van filter-hooks
De filter-haken in WordPress bieden je de mogelijkheid om de gegevens die worden overgedragen aan het systeem te bewerken. Je kunt bijvoorbeeld het inhoud, de titel of de samenvatting van een artikel aanpassen voordat deze worden weergegeven. Laten we een functie maken die automatisch een copyright-verklaring toevoegt aan het eind van elke artikel.
We zullen dit gebruiken.the_contentDeze filterhook: je moet een functie maken die de oorspronkelijke inhoud ontvangt.$contentDeze functie moet worden gewijzigd en de gewijzigde inhoud moet worden teruggegeven.
Voeg de volgende code toe aan je pluginbestand:
/**
* 在文章内容末尾添加版权声明
* @param string $content 原始的文章内容
* @return string 修改后的文章内容
*/
function myfp_add_copyright_to_content( $content ) {
// 仅对主循环中的单篇文章页面生效
if ( is_single() && in_the_loop() && is_main_query() ) {
$copyright_text = '<p><em>De auteursrechten van dit artikel berusten bij deze website. Voor het gebruik van dit artikel moet de bron worden vermeld.</em></p>';
$content .= $copyright_text;
}
return $content;
}
// 将函数挂载到 the_content 过滤器钩子,优先级为10
add_filter( 'the_content', 'myfp_add_copyright_to_content', 10 ); Nu verschijnt, wanneer je een artikel op de website bekijkt, de door jou toegevoegde auteursrechtaankondiging aan het onderste deel van de inhoud. De conditionele beoordeling in de functie zorgt ervoor dat deze aankondiging alleen wordt weergegeven wanneer de vereisten worden vervuld.is_single() && in_the_loop() && is_main_query()Zeer belangrijk: dit zorgt ervoor dat de tekst alleen wordt weergegeven in de hoofdloop van de individuele artikelpagina’s op de frontend, en niet in de homepagina-list, widgets of op andere plaatsen. Dit is een detail waar je goed op moet letten bij het schrijven van een kwalitatief goede plugin.
Internationalisatie van plugins en beste praktijken
Om je plugin beschikbaar te maken voor gebruikers overal ter wereld, is internationalisatie (i18n) een essentieel stap. WordPress biedt volledige functies om de tekst in je plugin naar andere talen te vertalen.
Pripare het tekstbestand van de plugin voor ondersteuning bij de vertaling.
Je moet een specifieke functie gebruiken om alle strings die in de plugin worden weergegeven aan de gebruiker te omringen. De meest gebruikelijke methode is...()Gebruikt om de vertaling te verkrijgen._e()Voor het direct weergeven van de vertaling, en ook…esc_html()Gebruikt in contexten waar HTML moet worden geëscapeseerd.
Allereerst moeten we de tekst in de notificatiefunctie en de auteursrechtfunctie die we eerder hebben gemaakt wijzigen, door de vertaalfunctie te gebruiken.
function myfp_display_admin_notice() {
?>
<div class="notice notice-success is-dismissible">
<p><?php _e( '欢迎使用“我的第一个插件”!插件已成功激活。', 'my-first-plugin' ); ?></p>
</div>
<?php
}
function myfp_add_copyright_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$copyright_text = '<p><em>' . esc_html__( '本文版权归本网站所有,转载请注明出处。', 'my-first-plugin' ) . '</em></p>';
$content .= $copyright_text;
}
return $content;
} Let op: elke vertaalfunctie bevat een tweede parameter.‘my-first-plugin’Dit is wat je hebt gedefinieerd in het hoofddeel van het plugin.Text DomainHet is een unieke identificator die WordPress vertelt tot welke plugin deze strings behoren.
Vervolgens moet je dit specificeren in de commentaren bovenin het plugin.Domain Path(即/languagesPlaats de vertaalmappen (.po- en .mo-bestanden) in de gewenste map. Je kunt tools als Poedit gebruiken om deze vertaalmappen te creeren en te beheren.
Voldoe aan de veiligheids- en codevereisten.
Security is van het hoogste belang bij het ontwikkelen van plugins. Vertrouw nooit op de door gebruikers ingevoerde gegevens. Verwerk nooit informatie die van buitenaf komt…$_GET、$_POST或$_REQUESTDe gegevens moeten worden gevalideerd, gereinigd en geëscapeseerd voordat ze worden gebruikt.
WordPress biedt een groot aantal functies aan om je te ondersteunen:
* 验证(Validation):检查数据是否符合预期格式(如is_email())。
* 清理(Sanitization):清除数据中的非法字符(如sanitize_text_field(), sanitize_email())。
* 转义(Escaping):在将数据输出到HTML、JavaScript或URL之前,确保其安全(如esc_html(), esc_js(), esc_url())。
Daarnaast moet je, wanneer je rechtstreeks met de database werkt, altijd de WordPress-databaseklasse gebruiken.$wpdbDe beschikbare methoden, zoals…$wpdb->prepare()Dit is om SQL-injectie-aanvallen te voorkomen.
Samenvatting
Met deze handleiding heb je het hele proces afgerond om van nul een volledig functionerende WordPress-plugin te maken. Je hebt geleerd hoe je een omgeving opzet, basispluginbestanden creëert, en hoe je functionaliteiten toevoegt aan WordPress met behulp van actions en filter hooks. Daarnaast heb je ontdekt hoe je het professionele en gebruiksvriendelijke karakter van je plugin kunt verbeteren door internationale ondersteuning te bieden en veiligheidsmaatregelen te nemen. Het kernpunt van pluginontwikkeling is om het WordPress-hook-systeem te begrijpen en ervoor te zorgen dat je dit systeem vloeiend kunt gebruiken; dit biedt ongeëvenaarde mogelijkheden voor uitbreiding en flexibiliteit. Vergeet niet dat je moet starten met simpele functionaliteiten, deze steeds verder te ontwikkelen, en altijd de veiligheid en kwaliteit van je code voorop te stellen. Op deze manier kun je een krachtig en betrouwbare WordPress-plugin maken.
Veelgestelde vragen (FAQ)
Moet een plugin in een specifieke map worden geplaatst?
Niet altijd. Een zeer eenvoudig, enkelbestandig plugin kan de inhoud direct overdragen.plugin-name.phpPlaats het opwp-content/plugins/De bestanden zijn te vinden in de map. Het is echter sterk aan te raden om voor plugins die meerdere bestanden bevatten (zoals CSS, JS, afbeeldingen of taalbestanden) een aparte map te gebruiken om alle relevante bestanden te organiseren. Dit maakt de structuur duidelijker en gemakkelijker te beheren.
Hoe maak ik een instellingenpagina voor mijn plugin?
Je kunt de instellingen-API die WordPress biedt gebruiken om professionele en veilige instellingenpagina's te creeren. De belangrijkste stappen zijn:add_menu_page()或add_submenu_page()De functie registreert een menu-pagina en gebruikt deze daarna.register_setting()、add_settings_section()和add_settings_field()Gebruik functies om velden en onderdelen van de instellingen te definiëren. Ten slotte schrijf je een callback-functie om de HTML-formulier van de instellingenpagina uit te geven.
Waarom zijn prefixen zo belangrijk bij het ontwikkelen van plugins?
WordPress is een enorm ecosysteem dat bestaat uit plugins en thema’s. Alles code wordt uitgevoerd in dezelfde globale namensruimte. Als je bijvoorbeeld een variabele hebt gedefinieerd met de naam…get_data()Als een gewone functie in een website wordt gebruikt en een ander plugin een functie met dezelfde naam definieert, kan dit tot een fatale fout leidden, waardoor de website niet meer werkt. Het gebruik van een unieke prefix (bijvoorbeeld een afkorting van de pluginnaam) kan dergelijke conflicten aanzienlijk voorkomen en de compatibiliteit tussen plugins garanderen.
Hoe moet ik mijn plugin-code debuggen?
In de ontwikkeling van WordPress is het handigste hulpmiddel voor het opsporen van fouten (debuggen) om de debug-modus aan te zetten.WP_DEBUGJe kunt dit op de website doen.wp-config.phpIn het bestand wordt dit gerealiseerd door bepaalde instellingen te maken.define( ‘WP_DEBUG’, true );Om dit te activeren, moet je de betreffende optie inschakelen. Hierdoor worden alle PHP-fouten, waarschuwingen en berichten op het scherm weergegeven. Voor een nog uitgebreidere afstelling van het systeem kun je andere opties gebruiken.error_log()De functie schrijft de informatie in het foutenlog van de server, of gebruikt professionele PHP-deboggingstools zoals Xdebug in combinatie met je IDE voor stap-voor-stap-debogging.
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