In de ontwikkeling van WordPress hangt het succes of fout van het maken van plugins vaak af van het goed gebruiken van de krachtige functies die worden geboden door het WordPress-core. In dit hoofdstuk wordt aandacht besteed aan enkele van de meest fundamentele en meest gebruikelijke plugin-API's. We gaan dieper in op de toepassingsmogelijkheden, parameters en methoden van deze API's, zodat ontwikkelaars stabiele, efficiënte en gemakkelijk te onderhouden plugins kunnen bouwen.
Core actions and filter hook functions
De pluginarchitectuur van WordPress is gebaseerd op een “hook”-systeem, waardoor ontwikkelaars op specifieke momenten tijdens het uitvoeren van de kerncode zelfdefinieerde functies kunnen toevoegen. Het begrijpen en correct gebruiken van deze hook-functies is de eerste stap in het ontwikkelen van plugins.
Een custom functie toevoegen aan de kernprocessen van WordPress
De functies van een plugin moeten op het juiste moment worden geactiveerd, en dit wordt meestal gerealiseerd met het “action”-mechanisme van WordPress.add_action Functies vormen de brug tussen plugins en het kernlevencykelsysteem; ze bieden ontwikkelaars de mogelijkheid om aangepaste code uit te voeren wanneer bepaalde evenementen plaatsvinden. remove_action Dit wordt gebruikt om acties die al zijn gemonteerd te verwijderen.
Aanbevolen leesmateriaal WordPress-pluginontwikkelingsgids: van nul beginnen met het maken van je eerste plugin。
De basisgrammatica is als volgt:
add_action( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 ) Als voorbeeld: stuur een berichtmail nadat de inhoud van een artikel is gepubliceerd.
function send_post_notification( $post_id ) {
// 发送邮件的逻辑
}
add_action( 'publish_post', 'send_post_notification' ); add_action De prioriteitsparameters bepalen de uitvoeringsvolgorde van meerdere callback-functies op dezelfde hook. Hoe lager het nummer, des eerder wordt de callback uitgevoerd. Dit is van cruciaal belang voor complexe plugins waarbij de uitvoeringsvolgorde moet worden gestuurd.
De gegevens die worden overgedragen aan andere functies of de uitvoer die wordt gedaan, kunnen worden gewijzigd.
Naast het uitvoeren van code op specifieke momenten, hebben ontwikkelaars vaak ook de behoef om de gegevens die door andere functies worden generereerd te bewerken. Hiervoor worden filterhooks gebruikt.add_filter De functie wordt gebruikt om filter-callbacks toe te voegen. Ze ontvangt invoerdata, verwerkt deze en moet de geënde data teruggeven.
Als voorbeeld: wijzigen van de laatste letter in de titel van alle artikelen:
Aanbevolen leesmateriaal Door deze WooCommerce-haken en filters te beheersen, kun je de functionaliteiten van je e-commerce-website naar wens aanpassen.。
function modify_post_title( $title ) {
return $title . ' - 我的网站';
}
add_filter( 'the_title', 'modify_post_title' ); 与 add_action In vergelijking met...add_filter Er wordt ook ondersteuning geboden voor het instellen van prioriteiten en het aantal parameters. Filters vormen de basis voor een zeer persoonlijke en aangepaste instelling van WordPress.
Database Operation and Option Management Functions
Plugins hebben meestal de mogelijkheid om gegevens op permanente wijze op te slaan. WordPress biedt een gestructureerd API voor het beheer van gegevens aan, van eenvoudige site-instellingen tot het bewerken van aangepaste database-tabelen.
De instellingen van plugins op veilige wijze opslaan en ophalen
For plugins that need to save user settings, the configuration options must be stored in the WordPress database.add_option、get_option 和 update_option Dit vormt de basis voor het beheer van data. De functies die hier worden gebruikt, werken met... wp_options Tabellen zijn geschikt om relatief simpele gegevens in de vorm van sleutel-waarde-paren op te slaan.
Allereerst kan je gebruikmaken van... add_option Om een initiële waarde toe te voegen: wp_options Deze functie voegt alleen gegevens toe wanneer de optie niet beschikbaar is.
add_option( 'my_plugin_api_key', '', '', 'no' ); // ‘no’表示非自动加载 Om de waarde van een optie te verkrijgen, wordt gebruikt… get_optionHet is altijd verstandig om standaardwaarden aan te bieden.
$api_key = get_option( 'my_plugin_api_key', '' ); // 第二个参数为默认值 Om de waarden van de opties te updaten, wordt dit gebruik. update_optionAls de optie niet bestaat, wordt deze automatisch gecreëerd:
Aanbevolen leesmateriaal Ultimatumgids voor het ontwikkelen van WordPress-plug-ins: van nul tot een professionele uitbreiding。
update_option( 'my_plugin_api_key', 'new_secret_key_123' ); Wanneer complexe gegevens, zoals arrays of objecten, moeten worden opgeslagen, zorgen deze functies automatisch voor het serialiseren en deserialiseren van deze gegevens.
Een aangepaste databasequery uitvoeren
Wanneer een plugin relatiegegevens of logs moet opslaan, is het meestal beter om een aangepaste database-tabel te creeren. In deze gevallen is het nodig om rechtstreeks te werken met de abstractieklasse van de WordPress-database. $wpdb Interactie biedt een veilige en standaardiseerde manier om toegang te krijgen tot databases.
Eerst moet je een tabel maken in de hook voor het activeren van de plugin. Zorg ervoor dat je de juiste methoden gebruikt. dbDelta Deze functie wordt gebruikt om de tabelstructuur veilig te creeren of bij te werken. Het vergelijkt de huidige tabelstructuur met de gewenste structuur en toepast de gewenste veranderingen op intelligente manier.
global $wpdb;
$table_name = $wpdb->prefix . 'my_plugin_orders';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id bigint(20) NOT NULL AUTO_INCREMENT,
customer_email varchar(100) NOT NULL,
amount decimal(10,2) NOT NULL,
order_date datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id),
KEY customer_email (customer_email)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql ); Tijdens het uitvoeren van een dataquery moet ervoor worden gezorgd dat… $wpdb->prepare Het voorbereiden van statements met behulp van bepaalde methoden is van cruciaal belang om SQL-injectieaanvallen te voorkomen:
$results = $wpdb->get_results(
$wpdb->prepare(
"SELECT * FROM {$wpdb->prefix}my_plugin_orders WHERE order_date > %s AND amount > %f",
'2026-01-01 00:00:00',
100.00
)
); Content generation and output functions
De plugins kunnen niet alleen in de achtergrond worden uitgevoerd, maar wat nog belangrijker is: ze kunnen inhoud genereren voor bezoekers. WordPress biedt krachtige functies om HTML veilig en flexibel te weergeven, shortcodes te verwerken en statische bronnen te beheren.
In artikelen en pagina's dynamische inhoud opnemen
Shortcodes bieden gebruikers de mogelijkheid om dynamische inhoud in artikelen en pagina's te embedden met behulp van simpele tags, en dit is een belangrijke functionaliteit voor het verbeteren van de gebruikersvriendelijkheid van plugins. add_shortcode Je kunt eenvoudig je eigen kortere codes creeren met functies.
add_shortcode De functie accepteert twee parameters: een kort code-label en een verwerkingsfunctie. De verwerkingsfunctie moet HTML-content teruggeven, in plaats van deze direct uit te voeren. Dit is in overeenstemming met het principe van WordPress: “eerst crawlen, dan renderen”.
add_shortcode( 'recent_posts', 'my_plugin_render_recent_posts' );
function my_plugin_render_recent_posts( $atts ) {
// 解析属性,设置默认值
$attributes = shortcode_atts( array(
'count' => 5,
'category' => ''
), $atts );
// 根据属性查询文章逻辑...
$output = '<ul class="recent-posts">';
// ... 生成列表项
$output .= '</ul>';
return $output;
} De gebruiker hoeft alleen maar in te typen in de editor. [recent_posts count="3"] Dit zal de lijst met de meest recente artikelen weergeven.
De waarde van een variabele veilig opslaan en vervolgens deze waarde veilig weergeven in HTML
Wanneer een plugin variabelen op de pagina moet weergeven (bijvoorbeeld tekst of instellingen die uit een database zijn gehaald), kan deze deze variabelen direct gebruiken. echo Of er zijn risico's voor cross-site scripting (XSS) bij het samenvoegen van strings. WordPress biedt speciale ontsluitingsfuncties aan om de uitstoot te beschermen tegen deze risico's.
Voor het weergeven van inhoud in de attributen van HTML-taggen, wordt gebruik gemaakt van… esc_attr Function:
echo '<input type="text" value="' . esc_attr( get_option( 'site_title' ) ) . '">'; Voor de weergave van inhoud in HTML-taggen, wordt gebruikt: esc_html:
echo '<h1>'`. esc_html($post_title)`.'</h1>'; Voor HTML-content waarvan de veiligheid al is bevestigd (bijvoorbeeld content die is gecontroleerd door…) wp_kses_post (Filtered), maar de volledige URL moet worden weergegeven. Hier kan worden gebruikt: esc_url:
echo '<a href="/nl/' . esc_url( $external_link ) . '/">link (op een website)</a>'; Om PHP-variabelen in een JavaScript-codeblok weer te geven, moet je de volgende code gebruiken: wp_json_encode En in combinatie met… esc_js:
<script>
var pluginSettings = <?php echo wp_json_encode( $settings_array ); ?>;
var message = '<?php echo esc_js( $user_message ); ?>';
</script> Functies voor het verwerken van bestanden en media
Veel plugins zijn betrokken bij het uploaden van bestanden, het verwerken van afbeeldingen of het bereiken van bestanden die zich binnen een thema of een plugin bevinden. WordPress bevat een geavanceerde logica voor serverpaden en URL's, en biedt daarbij een simpel API aan.
De absolute path naar de resources binnen een plugin of thema verkrijgen
Tijdens het ontwikkelen van plugins is het vaak nodig om naar CSS-, JavaScript- of afbeeldingsbestanden in dezelfde map te verwijzen. Het gebruiken van harde, absolute pathen is zeer onveilig, omdat de website kan worden verplaatst. WordPress biedt hier een oplossing voor… plugin_dir_path 和 plugins_url Een functie die dynamisch paden genereert.
plugin_dir_path De serverbestandsopslagpad naar de pluginmap, afgerond met een streep (/), geschikt voor include 或 require Bestand:
$config_path = plugin_dir_path( __FILE__ ) . 'config/config.php';
if ( file_exists( $config_path ) ) {
require_once $config_path;
} 而 plugins_url Dit wordt gebruikt om een URL te genereren die bereikbaar is via een browser, en is geschikt voor gebruik in `
或 Referenties naar bronnen in het tekst:
$css_url = plugins_url( 'assets/css/admin-style.css', __FILE__ );
wp_enqueue_style( 'my-admin-style', $css_url ); Voor themakers van thema's (theme developers) zijn de corresponderende functies... get_template_directory_uri 和 get_stylesheet_directory_uri。
Verwerken van mediafailen die door gebruikers zijn opgezet
Als de extensie het gebruikers toestaat om bestanden te uploaden, mag deze nooit rechtstreeks worden gebruikt. $_FILES Global arrays move_uploaded_file Functionen: De mediabewerkingsfuncties van WordPress wp_handle_upload Er wordt een volledige integratie van beveiligingscontroles en bestandsbeheer geboden.
Deze functie verzorgt automatisch de controle op de bestandstype, het hernoemen van bestanden (om overwriting te voorkomen), foutbehandeling, en verplaatst de bestanden naar de juiste directorystructuur in de WordPress-mediathek.
$uploadedfile = $_FILES['my_plugin_upload'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ( $movefile && ! isset( $movefile['error'] ) ) {
// 文件上传成功
$file_url = $movefile['url'];
$file_path = $movefile['file'];
// 可以将 $file_url 存入数据库
} else {
// 上传失败,输出错误信息
echo $movefile['error'];
} Om de geuploadde bestanden verder te integreren in de WordPress-mediathek, kun je ook gebruikmaken van… wp_insert_attachment De functie maakt bijlage-posten, zodat de ingebouwde beeltenaawerkingen van WordPress kunnen worden gebruikt (bijvoorbeeld het maken van thumbnail-foto's).
Samenvatting
Het beheersen van de kernfuncties en -methoden van WordPress is de basis voor een efficiënte en veilige ontwikkeling van plugins en thema's. Het begint met het begrijpen van het hook-systeem…add_action, add_filterModularisatie implementeren tot en met database-operaties$wpdb, get_optionZorg ervoor dat de gegevens permanent worden opgeslagen, en vervolgens worden de gegevens gebruikt voor de uitstelling van de inhoud.add_shortcode, esc_html) en veilige verwerking (wp_handle_uploadElke groep functies biedt oplossingen voor specifieke situaties die zijn getest en verbeterd door veel ervaring. Ontwikkelaars moeten de parameters, teruggegeven waarden en de beste praktijken goed begrijpen, om te voorkomen dat ze dezelfde dingen opnieuw ontwikkelen of beveiligingslekken introduceren. Hierdoor kunnen ze krachtige en betrouwbare WordPress-extensies bouwen.
Veelgestelde vragen (FAQ)
Wat is het fundamentele verschil tussen `add_action` en `add_filter`?
De belangrijkste verschillen tussen de twee zijn het gebruik en het verwachte gedrag van de callback-functies.add_action Dit wordt gebruikt om een bepaalde actie uit te voeren wanneer een bepaald evenement plaatsvindt. De callback-functie retourneert meestal geen waarde, maar voert alleen een bepaalde logische handeling uit (bijvoorbeeld een e-mail sturen of een log registreren). add_filter Ze worden gebruikt om “een bepaald gegeven te bewerken”. De callback-functie moet een invoerwaarde accepteren en een gewijzigd gegeven teruggeven. Technisch gezien zijn ze hetzelfde, maar de semantische verschillen maken de code beter leesbaar.
Wanneer je de $wpdb-klasse gebruikt, waarom moet je dan de prepare-methode gebruiken?
$wpdb->prepare Methoden zijn een belangrijke verdedigingslinie tegen SQL-injectieaanvallen. Ze gebruiken plaatshouders (%s voor strings, %d voor integers en %f voor float-waarden) om variabelen op te nemen, en zorgen ervoor dat deze variabelen vooraf correct worden geëscapeerd en geformatteerd voordat ze worden ingevoegd in SQL-sententies. Ook al bent u er zeker van dat de bron van de variabelen veilig is (bijvoorbeeld afkomstig van een betrouwbare bron)... get_option(Niet vertaald), gebruik prepare Dit is ook een goede gewoonte die moet worden gevolgd, omdat het zorgt dat de code stabiel blijft wanneer er in de toekomst veranderingen of complexe situaties optreden.
Kunnen de esc_html- en esc_attr-functies met elkaar worden verwechseld?
Hoewel het in sommige eenvoudige gevallen niet meteen tot fouten zal leiden als de twee functies worden uitgewisseld, wordt dit sterk niet aanbevolen. De twee functies zijn namelijk optimaal aangepast voor verschillende HTML-contexten.esc_html Het wordt gebruikt om de inhoud die zich binnen HTML-taggen bevindt te ontsluiten (te 'escape'). <、>、&、"、' Deze tekens worden omgezet in HTML-entiteiten. esc_attr Dit is speciaal ontworpen om waarden in HTML-tagattributen te ontsluiten, waarbij rekening wordt gehouden met de mogelijkheid dat de attribuutwaarden tussen aanhalingstekens staan. Het gebruiken van de juiste functie zorgt ervoor dat de ontsluiting in alle mogelijke gevallen veilig wordt uitgevoerd.
Wat betekent de constante FILE in `plugin_dir_path(FILE)`?
FILE Dit is een PHP-magische constante die de volledige path en de naam van het bestand van het huidige uitgevoerde script in het bestandsysteem aangeeft. Deze constante kan worden gebruikt in het hoofdbestand van een plugin. plugin_dir_path(FILE)Het is mogelijk om de absolute path van de plugin-map dynamisch en nauwkeurig te bepalen, ongeacht waar de plugin is geïnstalleerd. Dit is veel betrouwbaarder dan het gebruik van harde gekodeerde paden, en zorgt ervoor dat de plugin overdraagbaar is op verschillende serveromgevingen. Dit is ook van belang bij het ontwikkelen van thema's, waarbij soortgelijke constante waarden worden gebruikt. DIR of een functie get_template_directory() Ze spelen allebei dezelfde rol.
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.
- Diepgravend onderzoek naar WooCommerce: van nul een krachtig WordPress-e-commerce-platform bouwen
- Voordracht: Waarom kiezen voor WordPress voor ontwikkeling?
- Wat is een WordPress subtheme?
- Van nul beginnen: Het volledige proces van het ontwikkelen van moderne WordPress-themes en de beste praktijken
- Volledig handboek voor het ontwikkelen van WordPress plugins: van het begin tot de volmaakte beheersing van professionele uitbreidingen