Het beheersen van het ontwikkelen van WordPress plugins is een essentieel vereiste om de functionaliteit van een website uit te breiden en persoonlijke wensen te realiseren. Dit verschilt fundamenteel van het gewoon aanpassen van thema's (templates). functions.php Ten opzichte van bestanden zorgt het gebruik van plugins ervoor dat de functionaliteit onafhankelijk is van het thema, waardoor het gemakkelijker is om plugins te migreren, te beheren en te onderhouden. In dit artikel wordt je stap voor stap geleid hoe je een plugin maakt die volledig gestructureerd is en voldoet aan de codingstandaarden van WordPress.
Forbereidende werkzaamheden en opzet van de omgeving
Voordat je de eerste regel code schrijft, heb je een geschikte ontwikkelomgeving nodig en een basiskennis van de architectuur van WordPress.
Configuratie van de ontwikkelingsomgeving
Een standaard lokale ontwikkelomgeving vormt de basis voor efficiënte ontwikkeling. Het wordt aanbevolen om tools als XAMPP, MAMP of Local by Flywheel te gebruiken; deze kunnen Apache, MySQL/Nginx, PHP en WordPress in één stap installeren. Daarnaast is het belangrijk dat je teksteditor of IDE (bijvoorbeeld VS Code of PhpStorm) PHP-syntaxis ondersteunt met highlightering en codevoorstellen, waardoor de ontwikkelingsefficiëntie aanzienlijk wordt verbeterd.
Aanbevolen leesmateriaal Diepgravend inzicht in het ontwikkelen van WordPress plugins: van nul tot efficiënte personalisatie。
Het begrijpen van de architectuur van WordPress plugins
Een WordPress-plugin is in feite één of meerdere PHP-bestanden die zijn opgeslagen in een specifieke map in het WordPress-installatiepad. wp-content/plugins/ Het bevindt zich in de map. De kernprincipie is het “hook”-mechanisme. Plugins kunnen op bepaalde tijdstippen code uitvoeren via “action hooks”, of de uitgegeven data van andere functies wijzigen met behulp van “filter hooks”. add_action 和 add_filter Deze twee functies vormen de basis voor het ontwikkelen van plugins.
Maak je eerste plugin: een groet-hulpmiddel
We gaan een simpel plugin maken genaamd “Daily Greetings”. Dit plugin zal een aangepaste welkomstwidget weergeven op het dashboard in het beheerpaneel van de website.
Maak een hoofdbestand voor het plugin.
Allereerst: wp-content/plugins/ Maak een nieuwe map in de map en geef deze de naam my-first-greeting-pluginIn deze map moet je een hoofdplugin-bestand maken. my-first-greeting-plugin.php。
Elk plugin moet beginnen met een standaard commentaar in de header, dit is het kenmerk dat WordPress gebruikt om plugin-informatie te herkennen. Open het hoofdbestand en voer de volgende code op:
<?php
/**
* Plugin Name: 每日问候
* Plugin URI: https://www.yourwebsite.com/my-first-greeting-plugin
* Description: 这是一个示例插件,用于在仪表盘显示个性化问候。
* Version: 1.0.0
* Author: Your Name
* Author URI: https://www.yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-greeting
*/ Nadat je het bestand hebt gesaved, ga je naar de “Plugins”-pagina in het WordPress-administratiepaneel. Hier moet je het “Daily Greetings”-plugin zien staan in de lijst; je kunt het hier activeren. Op dit moment heeft het plugin nog geen functies.
Aanbevolen leesmateriaal De ultieme gids voor het ontwikkelen van WordPress-plug-ins: van nul tot één, hoe je je eerste plug-in maakt.。
Add widgets to the dashboard.
Volgens de opgegeven tekst gaan we vervolgens WordPress gebruiken. wp_dashboard_setup Gebruik action-hooks om een aangepast dashboard-tweakje toe te voegen. Voeg de volgende code toe onder de commentaren aan het begin van het hoofdbestand:
// 添加仪表盘小工具
function mfgp_add_dashboard_widget() {
wp_add_dashboard_widget(
'mfgp_dashboard_widget', // 小工具唯一ID
'每日问候', // 小工具标题
'mfgp_dashboard_widget_content' // 显示内容的回调函数
);
}
add_action( 'wp_dashboard_setup', 'mfgp_add_dashboard_widget' );
// 定义小工具内容
function mfgp_dashboard_widget_content() {
$user = wp_get_current_user();
$hour = date('G'); // 获取当前小时(24小时制)
if ( $hour >= 5 && $hour < 12 ) {
$greeting = '早上好';
} elseif ( $hour >= 12 && $hour < 18 ) {
$greeting = '下午好';
} else {
$greeting = '晚上好';
}
echo '<p>' . sprintf( esc_html__( '%s,%s!欢迎回来。', 'my-first-greeting' ), $greeting, esc_html( $user->display_name ) ) . '</p>';
echo '<p>' . esc_html__( '这是你的第一个插件创建的问候小工具。', 'my-first-greeting' ) . '</p>';
} Deze code doet twee dingen: in eerste plaats definieert hij een function. mfgp_add_dashboard_widgetGebruik wp_add_dashboard_widget Een functie registreert een klein hulpmiddel. Vervolgens wordt dit hulpmiddel gedefinieerd. mfgp_dashboard_widget_content Er is een functie die de inhoud van de kleine hulpmiddelen genereert. Deze functie toont afhankelijk van de tijd van de dag verschillende groetingen en noemt ook de naam van de geïnstalleerde gebruiker. Let op: we hebben hierbij gebruik gemaakt van… esc_html__() 和 esc_html() Het voorbereiden van functies op vertaling en het uitvoeren van escape-maanoeuvren is een belangrijke praktijk om veiligheid en internationaal gebruik te garanderen.
Nadat je de plugin hebt aktiveerd en de dashboard-pagina hebt opgefrist, zie je het “Daily Greeting”-tool.
Verbeterde plugin-functies en veiligheidsmaatregelen
Een basisplugin is al afgerond, maar om het sterker en professioneler te maken, moeten we aandacht besteden aan de beveiliging, onderhoudbaarheid en gebruikersconfiguratie.
Pagina voor het instellen van plugins
Het zou handiger zijn als gebruikers hun eigen groetwoorden konden instellen. We zullen een eenvoudige instellingenpagina maken voor het plugin.
Allereerst gebruiken we admin_menu Voor de action-hook wordt een submenü-pagina toegevoegd:
Aanbevolen leesmateriaal WordPress-pluginontwikkelingsgids voor beginners: bouw je eerste custom-plugin vanaf nul。
// 添加设置菜单
function mfgp_add_admin_menu() {
add_options_page(
'每日问候设置', // 页面标题
'每日问候', // 菜单标题
'manage_options', // 所需权限
'my-first-greeting-plugin', // 菜单slug
'mfgp_settings_page_content' // 回调函数
);
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' ); Vervolgens worden de inhoud van de instellingenpagina, de mogelijkheden voor registratie en het verwerken van het opslaan van formulieren gecreëerd:
// 设置页面内容
function mfgp_settings_page_content() {
?>
<div class="wrap">
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
<form action="/nl/options.php/" method="post" data-trp-original-action="options.php">
<?php
settings_fields( 'mfgp_settings_group' ); // 输出安全字段
do_settings_sections( 'my-first-greeting-plugin' ); // 输出设置区块
submit_button(); // 输出提交按钮
?>
<input type="hidden" name="trp-form-language" value="nl"/></form>
</div>
<?php
}
// 初始化设置
function mfgp_settings_init() {
register_setting(
'mfgp_settings_group', // 选项组名
'mfgp_custom_message', // 选项名
array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
);
add_settings_section(
'mfgp_section', // 区块ID
'自定义问候设置', // 区块标题
null, // 区块描述回调(无)
'my-first-greeting-plugin' // 所属页面
);
add_settings_field(
'mfgp_field',
'自定义问候语前缀',
'mfgp_field_callback', // 输出字段HTML的回调
'my-first-greeting-plugin',
'mfgp_section'
);
}
add_action( 'admin_init', 'mfgp_settings_init' );
// 设置字段的回调函数
function mfgp_field_callback() {
$value = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );
echo '<input type="text" name="mfgp_custom_message" value="' . esc_attr( $value ) . '" class="regular-text" />';
echo '<p class="description">Deze tekst zal worden toegevoegd voordat de groet.</p>';
} Ten slotte moet de functie die de inhoud van de kleine hulpmiddelen bewerkt worden aangepast, zodat de door de gebruiker gedefinieerde instellingen worden opgevolgd:
// 更新小工具内容函数,使用自定义消息
function mfgp_dashboard_widget_content() {
$user = wp_get_current_user();
$hour = date('G');
$custom_msg = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );
if ( $hour >= 5 && $hour < 12 ) {
$greeting = '早上好';
} elseif ( $hour >= 12 && $hour < 18 ) {
$greeting = '下午好';
} else {
$greeting = '晚上好';
}
echo '<p>' . esc_html( $custom_msg ) . sprintf( esc_html__( '%s,%s!', 'my-first-greeting' ), $greeting, esc_html( $user->display_name ) ) . '</p>';
} Nu verschijnt er onder het menu “Instellingen” in de WordPress-beheeromgeving een pagina met de optie “Dagelijkse groeten”. Hier kunnen beheerders een persoonlijke groetensafvoeging opslaan.
Voldoen aan veiligheids- en coderingstandaarden
Tijdens het ontwikkelingsproces moet men de beveiligingsrichtlijnen van WordPress naleven: voor alle gegevens die vanuit gebruikers of de database komen en vervolgens worden weergegeven, moeten de juiste ontsnippingsfuncties worden gebruikt. esc_html, esc_attr, esc_urlVereist de validatie en schoonmaak van alle door gebruikers ingevoerde gegevens (bijvoorbeeld met behulp van bepaalde tools of methoden). sanitize_text_field);Gebruik wp_kses_post 或 wp_kses Om veilig HTML te kunnen gebruiken, wordt het aanbevolen om de volgende regels te volgen: Officiële PHP-codingstandaard van WordPressDit is om de code duidelijk en consistent te houden.
Internationalisatie van plugins en voorbereiding op publicatie
Om je plugin beschikbaar te maken voor gebruikers wereldwijd, is internationalisatie een essentieel stap. Daarnaast moet je ook enkele regels naleven wanneer je je plugin klaarmaakt voor publicatie in de officiële catalogus.
Internationalisatie van plugins realiseren
We hebben dit al gebruikt in de code. esc_html__() De tekst die moet worden vertaald is: 'Om het te verpakken, moet je in het plugin-verzeichnis een nieuwe bestand maken.' Voor internationaal gebruik moet je in het plugin-verzeichnis een nieuwe map of bestand aanmaken, afhankelijk van de vereisten. languages Een map. Vervolgens voeg je, na de commentaren aan het begin van het hoofdbestand, de volgende code toe om het tekstveld te laden:
// 加载文本域以实现国际化
function mfgp_load_textdomain() {
load_plugin_textdomain( 'my-first-greeting', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfgp_load_textdomain' ); Daarna kunt u een tool gebruiken zoals Poedit om de vertaalsstrings in het plugincode te scannen en zo een nieuwe vertaling te genereren. .pot Templatebestanden, en voor verschillende talen (zoals Chinees) zh_CNCreëren .po En de gecompileerde versie .mo File, plaatsen in languages Mappen.
Ver klaar om te worden gepubliceerd in de officiële catalogus.
Als je van plan bent je plugin in te dienen bij het WordPress.org-pluginarchief, moet je ervoor zorgen dat de kwaliteit van je code op orde is en dat de nodige meta-data-bestanden aanwezig zijn. Bijvoorbeeld moet je een… readme.txt De bestand moet in een specifieke format zijn opgeslagen. Specifieke regels voor WordPressDe inhoud moet de namen van de plugins, een beschrijving, instructies voor het installeren, veel voorkomende vragen, update-logboeken en dergelijke bevatten. Daarnaast zou het handig zijn om een uninstallatie-mechanismus toe te voegen, zodat de opties in de database worden verwijderd wanneer de gebruiker de plugin verwijdert.
// 插件卸载时清理选项
function mfgp_uninstall_hook() {
delete_option( 'mfgp_custom_message' );
}
register_uninstall_hook( __FILE__, 'mfgp_uninstall_hook' ); Samenvatting
Door dit “Daily Greeting”-plugin te bouwen, hebben we de kernprocessen van WordPress-pluginontwikkeling volledig doorlopen: van het opzetten van de basisbestandsstructuur tot het toevoegen van functionaliteiten met behulp van action hooks, tot het creeren van een beheerinterface, het naleven van veiligheidsregels en het voorbereiden op internationalisering. Het belangrijkste is om het WordPress-hook-systeem te begrijpen en ervoor te zorgen dat je dit systeem vloeiend gebruikt, terwijl je altijd veiligheid en codestandaarden voorop stelt. Dit simpele voorbeeld vormt de starting point voor je reis als pluginontwikkelaar. Hierop kun je verder ontwikkelen met meer complexe functies, zoals kortere codes, aangepaste artikeltypen en REST API-ëndpunten, om zo krachtige, professionele plugins te creeren.
Veelgestelde vragen (FAQ)
Welke map moet de plugin worden opgeslagen?
WordPress-plug-ins moeten worden opgeslagen op de website. wp-content/plugins/ De plugins zitten in een map. Elke plugin kan een apart PHP-bestand zijn, maar het is veel gebruikelijker dat er een map met de naam van de plugin wordt gebruikt, waarin het hoofdbestand en andere bronnen zijn opgeslagen.
Waarom wordt mijn plugin niet weergegeven in de lijst met backends?
Controleer of de opmerkingen in het begin van het hoofdbestand van het plugin (zoals de pluginnaam en beschrijving) in het juiste format staan en volledig zijn. Zorg ervoor dat het bestand zich bevindt in de juiste map, en dat WordPress toegang heeft tot dit bestand. Daarnaast moet je controleren of er geen onnodige ruimtes of extra karakters aan het begin van de PHP-code staan.
Hoe debug je PHP-fouten in een plugin?
在 wp-config.php In het bestand wordt… WP_DEBUG De constante is ingesteld op... trueDit zal WordPress in staat stellen om PHP-fouten, waarschuwingen en berichtgevingen op de pagina te weergeven. Houd er rekening mee dat deze functie alleen in een ontwikkelingsomgeving moet worden ingeschakeld en dat deze vooraf moet worden uitgeschakeld voordat de website wordt gepubliceerd.
In welk opzicht verschillen de function.php-bestanden van plugins en thema's?
In het thema… functions.php De functies die zijn toegevoegd, zijn gebonden aan het gekozen thema. Als je het thema wijzelt, kunnen deze functies niet langer werken. De functies die worden aangeboden door plugins zijn daarentegen onafhankelijk van het thema; zolang de plugin is geactiveerd, zijn ze altijd beschikbaar. Voor functies die op alle thema's bruikbaar zijn, is het beter om een plugin te ontwikkelen.
Hoe kan ik andere ontwikkelaars helpen om mijn plugin uit te breiden?
Je kunt andere ontwikkelaars de mogelijkheid geven om je plugin uit te breiden door zelfgemaakte “action-hooks” en “filter-hooks” te bieden. do_action() Een actie-haak (action hook) creëren, waarmee je “acties” kunt uitvoeren op de plekken waar code moet worden ingevoerd. apply_filters() Een filterhook maken betekent dat je andere plugins toestaat om bepaalde datawaarden in je eigen plugin te wijzigen. Dit is een veelgebruikte manier van samenwerking tussen plugins in de WordPress-ecosysteem.
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