Analyses van essentiële functies en methoden

3 minuten leestijd
2026-03-12
2026-06-04
1,972
Ik verdien commissies wanneer je via de onderstaande links winkelt, zonder dat dit extra kosten voor jou met zich meebrengt.

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:

UltaHost WordPress-hosting
30-daagse garantie voor het terugbetalen van het geld, onbeperkt bandbreedte- en databestand, gratis DDoS-beveiliging, en een prijsvoordeel van 50% bij een aankoop van 3 jaar.
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_optionget_optionupdate_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.

hosting.com gedeelde hosting
Hoge prestaties met AMD EPYC CPU's, NVMe SSD opslag en LiteSpeed, 24/7 deskundige interne ondersteuning, geavanceerde beveiligingsmaatregelen waaronder SSL, bescherming tegen brute kracht, malware en DDoS, besparingen tot 73%

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.

InterServer gedeelde hosting
Shared hosting $2.50 USD per maand, eerste maand $0.1 USD promo code tryinterserver, 461 cloud apps scripts, een klik te installeren.

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_pathplugins_url Een functie die dynamisch paden genereert.

plugin_dir_path De serverbestandsopslagpad naar de pluginmap, afgerond met een streep (/), geschikt voor includerequire 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 `

Analyse van essentiële functies en methoden - LikaCloud

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_uriget_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.