Van nul naar honderd: de basisstructuur voor het ontwikkelen van WordPress-plug-ins.
Om een WordPress-plugin te ontwikkelen, is het eerst nodig om de basisstructuur van WordPress te begrijpen. Het belangrijkste bestand van een plugin is het hoofdbestand (main file), dat meestal dezelfde naam heeft als de plugin.my-first-plugin.phpDeze bestand bevat niet alleen al het functionerende code van het plugin, maar wat nog belangrijker is, zijn de commentaren in de bovenste regel met informatie over het plugin. Deze informatie is essentieel voor WordPress om het plugin te herkennen.
De commentaren in het hoofddeel van een plugin moeten bepaalde metadata bevatten. Hier is een eenvoudig voorbeeld:
<?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
*/ Deze bestand is gemaakt en vervolgens opgeslagen./wp-content/plugins/Na het toevoegen van de plugin kun je deze vinden op de “Plugins”-pagina in het WordPress-administratiepaneel, waar je hem kunt activeren of deactiveren. Het is belangrijk om de volgorde van het laden en uitvoeren van de plugin-code te begrijpen. WordPress laadt plugins in alfabetische volgorde./wp-content/plugins/Alle geldige plugin-hoofdbestanden die zich in de map bevinden. Als je plugin afhankelijk is van de functionaliteit van andere plugins, mag je niet zomaar aannemen dat deze andere plugins al zijn geladen. In dit geval moet je ervoor zorgen dat ze worden geladen.plugins_loadedDeze actie-hook zorgt ervoor dat de code op het juiste moment wordt uitgevoerd.
Aanbevolen leesmateriaal De ultieme gids voor het ontwikkelen van WordPress-plug-ins: van nul tot het bouwen van commerciële extensies.。
Dieper inzicht in hooks: de werking van acties en filters
De kernfilosofie van het ontwikkelen van WordPress-plug-ins is “hooks”. Hooks bieden de mogelijkheid om je eigen code in te voegen in de uitvoeringsflow van het WordPress-core, thema’s of andere plug-ins, zonder de originele bestanden te hoeven bewerken. Er zijn twee belangrijke types hooks: Action Hooks en Filter Hooks.
Action hooks bieden je de mogelijkheid om zelfgemaakte functies uit te voeren wanneer bepaalde gebeurtenissen plaatsvinden. Bijvoorbeeld wanneer een artikel wordt gepubliceerd…publish_post), wanneer resources worden geladen in de hoofdsectie van de webpagina (wp_enqueue_scripts) of wanneer het wordt 초기iseerd in de beheeromgeving (admin_initOm een action-hook te gebruiken, moet je...add_action()De functie “monteert” je callback-functie op de hook.
add_action( 'init', 'myplugin_custom_init' );
function myplugin_custom_init() {
// 在WordPress初始化时执行
// 例如,注册一个自定义文章类型
} De filter-haken worden gebruikt om gegevens te bewerken. Ze bieden de mogelijkheid om de variabelen die aan ze worden overgedragen op te vangen, te bewerken en ze daarna terug te sturen. Denk hierbij aan het bewerken van de inhoud van een artikel.the_content), modificeren van de lengte van de uitdraaiingen (excerpt_length) of de resultaten van de query wijzigen (the_postsOm een filter te gebruiken, moet een oproep worden gedaan.add_filter()Functie.
add_filter( 'the_title', 'myplugin_custom_title' );
function myplugin_custom_title( $title ) {
// 修改文章标题
return '前缀:' . $title;
} Een custom hook maken
Naast de honderden ingebouwde hooks die WordPress biedt, kunnen ontwikkelaars van geavanceerde plugins ook hun eigen hooks maken, zodat andere ontwikkelaars deze kunnen gebruiken om functies uit te breiden.do_action()Om een actie-hook te creeren, moet je gebruikmaken van...apply_filters()Maak een filterhook.
// 在插件代码中定义一个自定义动作钩子
do_action( 'myplugin_after_something_happens', $some_data );
// 在插件代码中定义一个自定义过滤器钩子
$value = apply_filters( 'myplugin_filter_some_value', $default_value ); Constructie van plugin-functies: veiligheid en beste praktijken
Tijdens het schrijven van plugin-functies is veiligheid een belangrijke overweging. Vertrouw nooit op de invoer van gebruikers. Alle gegevens van buitenaf (zoals uit vormulieren, URL-parameters of cookies) moeten worden gevalideerd, gereinigd en geëscapeseerd.
Aanbevolen leesmateriaal Een introductie tot het ontwikkelen van WordPress-plug-ins: van nul tot expert in het creëren van aangepaste functionaliteit.。
Datavalidatie en escape
Voor de invoer wordt gebruik gemaakt van...sanitize_text_field()、sanitize_email()、intval()Verzorg ervoor dat functies worden gereinigd. Voor de gegevens die worden weergegeven op een HTML-pagina, moet worden gebruikt…esc_html()、esc_attr()或wp_kses_post()Een escape-methode wordt gebruikt om cross-site scripting (XSS)-aanvallen te voorkomen.
$user_input = $_POST['some_field'];
$clean_input = sanitize_text_field( $user_input );
// 输出时
echo '<div class="' . esc_attr( $class_name ) . '">'`. esc_html($clean_input)`.'</div>'; Interactie met de database
WordPress biedt…$wpdbDe globale objecten worden gebruikt voor directe database-operaties, maar het is beter om de ingebouwde functies van WordPress te gebruiken, indien mogelijk.get_post()、update_option()Enz. Als je SQL moet gebruiken, moet je dat zeker doen op de juiste manier.$wpdb->prepare()Methoden om SQL-injecties te voorkomen.
global $wpdb;
$user_id = intval( $_GET['id'] );
$results = $wpdb->get_results(
$wpdb->prepare( "SELECT * FROM {$wpdb->prefix}my_table WHERE user_id = %d", $user_id )
); Voeg een beheermenu en -pagina toe.
Het is een veel voorkomend verzoek om een configuratiepagina te maken voor een plugin. Je kunt hiervoor gebruikmaken van…add_menu_page()或add_options_page()Deze functies worden gebruikt om menu-items in de achtergrond toe te voegen. Ze moeten worden gebruikt in...admin_menuGeroepen in de action-hook.
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'myplugin-slug', // 菜单别名
'myplugin_settings_page' // 用于呈现页面的回调函数
);
}
function myplugin_settings_page() {
// 输出设置页面HTML
echo '<div class="wrap"><h1>Instellingen</h1></div>';
} Plugin-release voorbereiding: Internationalisering en codeorganisatie
Als de functies van het plugin zijn verbeterd, is het belangrijk om aandacht te besteden aan internationalisatie en de organisatie van de code, zodat het toegankelijk is voor een breder publiek en gemakkelijk te onderhouden is.
Internationalisatie van plugins realiseren
Internationalisatie (i18n) zorgt ervoor dat je plugin in andere talen kan worden vertaald. Hiervoor worden de vertaalfuncties van WordPress gebruikt.__()、_e()、_x()Verzamel alle door de gebruikers zichtbare strings en declareer deze in het begin van het plugin.Text Domain(zoals)my-first-plugin)。
// 在代码中
$greeting = __( 'Hello, World!', 'my-first-plugin' );
_e( 'This text will be echoed and translatable.', 'my-first-plugin' );
// 然后,使用如Poedit等工具生成 .pot 翻译模板文件。 Modulaire codeorganisatie
Vermeid het om al het code-materiaal in één hoofdbestand te stoppen. Een goede praktijk is om de code voor verschillende functies op te delen in aparte bestanden of onderdelen van het hoofdbestand..phpDe bestanden zitten in de hoofdmap en worden door deze hoofdmap ingebed. Voorbeeld:
- includes/admin/ De map bevat de code die betrekking heeft met de backend.
- includes/public/ De map bevat code die te maken heeft met de front-end.
- includes/class-*.php Hier worden de belangrijkste classdefinities opgeslagen.
- assets/css/ 和 assets/js/ Hier worden style sheets en scripts opgeslagen.
Aanbevolen leesmateriaal De ultieme gids voor het ontwikkelen van WordPress-plug-ins: van nul tot één, met kerntechnieken voor het bouwen van aangepaste functionaliteiten.。
Het gebruik van objectgericht programmeren maakt het mogelijk om code beter te organiseren, conflicten tussen functienamen te voorkomen en de herbruikbaarheid te verbeteren. Definieer een hoofdklasse en maak in de constructor van deze klasse alle nodige ‘hooks’ (of andere onderdelen van de code) klaar voor gebruik.
class My_First_Plugin {
public function __construct() {
add_action( 'init', array( $this, 'init_method' ) );
add_filter( 'the_content', array( $this, 'filter_content' ) );
}
public function init_method() {
// 初始化
}
public function filter_content( $content ) {
return $content . '<p>Extra inhoud toevoegen via plugins</p>';
}
}
new My_First_Plugin(); Samenvatting
Het ontwikkelen van WordPress-plug-ins betekent dat je zelfgemaakte functies naadloos integreert in het WordPress-ecosysteem. Het begint met een standaardvolgens de specificaties opgesteld commentaarbestand in de kop van het plug-in. Het kernpunt van het ontwikkelen is om ervaren te zijn met action-hooks en filter-hooks, zodat je het gedrag van WordPress op eventgestuurde manier kunt uitbreiden of aanpassen. Tijdens het coderen moet je de veiligheid topprioriteit geven en de gegevens strikt verifiëren, schoonmaken en ontsluiten. Naarmate de functionaliteit van het plug-in groter wordt, zijn een goede codeorganisatie (inclusief objectgericht ontwerp en een modulaire bestandsstructuur) en ondersteuning voor internationaal gebruik belangrijke stappen om de onderhoudbaarheid, professionaliteit en de bereikbaarheid van het plug-in te verbeteren. Door deze beste praktijken te volgen, kun je krachtige, veilige en gemakkelijk te distribueren WordPress-plug-ins bouwen.
Veelgestelde vragen (FAQ)
Welke basiskennis is nodig om een WordPress-plugin te ontwikkelen?
Je moet de basis van de PHP-programmering beheersen, omdat WordPress en zijn plugins allemaal in PHP zijn geschreven. Daarnaast is een basiskennis van HTML, CSS en JavaScript vereist voor het beheersen van de front-end-weergave en interactie. Het belangrijkste is om de basisprincipes van WordPress te begrijpen, evenals het hook-systeem; dit vormt de kern van het ontwikkelen van plugins.
Hoe voorkom ik dat de namen van de functies in mijn plugin niet in conflict komen met de namen van functies in andere plugins?
De beste praktijk is om objectgerichte programming (OOP) te gebruiken en je functionaliteiten te verpakken in een klasse. Op deze manier zijn de namen van de methoden binnen de klasse onafhankelijk van elkaar. Als je procedurale programming gebruikt, moet je voor alle functies, klassen en constanten een unieke prefix toevoegen. Deze prefix kan bijvoorbeeld een afkorting van je plugin of je merknaam zijn.myplugin_或acme_En zorg ervoor dat dit gedrag consistent is door het hele codebestand heen.
Waar moet ik de JavaScript- en CSS-bestanden van het plugin laden?
Om de nauwkeurigheid en prestaties te garanderen, moet je nooit rechtstreeks naar resourcebestanden linken in HTML-templates. Je moet de door WordPress beschikbare ‘enqueue’-functie gebruiken. Voor front-end-resources is dit zeer belangrijk.wp_enqueue_script()和wp_enqueue_style()En mounteer het op…wp_enqueue_scriptsOp de action-haken. Voor resources die alleen worden gebruikt in de backend-beheerinterface, worden ze gemount.admin_enqueue_scriptsAan de haak.
Hoe kunnen plugins hun eigen instellingen en gegevens opslaan?
Voor het instellen van eenvoudige, enkele waarden, kunt u de WordPress Options API gebruiken.add_option()、get_option()和update_option()Voor meer complexe en gestructureerde gegevens (bijvoorbeeld een lijst met formulieronderdelen) moet men ervoor zorgen dat er speciale database-tabellen worden gecreëerd. Dit kan worden gerealiseerd met behulp van...dbDelta()De functie wordt actief wanneer het plugin wordt geactiveerd (via...)register_activation_hookDe tabelstructuur kan veilig worden gecreëerd of bijgewerkt.
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