Grundlagen der WordPress-Plugin-Entwicklung
WordPress-Plugins sind unabhängige Sammlungen von PHP-Skripten, die die Kernfunktionen von WordPress erweitern. Sie ermöglichen es Entwicklern, neuen Funktionen für eine Website hinzuzufügen oder das bestehende Verhalten zu ändern, ohne die WordPress-Kerndateien zu verändern. Ein Plugin kann so einfach sein, dass es nur aus einer einzigen Datei besteht, oder es kann auch ein komplexes Verzeichnis sein, das aus mehreren Dateien, Skripten und Stylesheets besteht.
Das Verständnis der grundlegenden Struktur eines Plugins.
Die wichtigste Datei eines Plugins ist die Haupt-Plugin-Datei. Diese Datei muss einen bestimmten Plugin-Hauptkommentar enthalten, mit dem WordPress Ihr Plugin erkennen kann. Der Plugin-Hauptkommentar befindet sich in der Regel am Anfang der Datei und enthält Informationen wie den Namen des Plugins, eine Beschreibung, die Version, den Autor usw. Zum Beispiel könnte die Hauptdatei eines Plugins mit dem Namen “Mein Gruß-Plugin” wie folgt aussehen: my-greeting-plugin.php Der Anfang könnte wie folgt aussehen:
<?php
/**
* Plugin Name: 我的问候插件
* Plugin URI: https://example.com/my-greeting-plugin
* Description: 一个简单的插件,用于在网站前台显示问候语。
* Version: 1.0.0
* Author: 开发者名称
* License: GPL v2 or later
* Text Domain: my-greeting-plugin
*/ Nach dem Einfügen des Plugin-Headers können Sie mit dem Schreiben des Funktionscodes für das Plugin beginnen. Der gesamte Plugin-Code sollte in Bedingungssätzen eingebettet werden, um direkten Zugriff zu verhindern und sicherzustellen, dass der Code nur in der WordPress-Umgebung ausgeführt wird.
Empfohlene Lektüre Von Grund auf: Erstellen Sie Ihr erstes WordPress-Plugin。
Plugin-Verzeichnis und Dateiorganisation
Für Plugins mit einfachen Funktionen reicht oft eine PHP-Datei aus. Mit zunehmender Funktionalität wird jedoch eine gute Strukturierung der Dateien unerlässlich. Ein typisches Verzeichnis für Plugins kann die folgende Struktur aufweisen:
- my-plugin/ (Hauptverzeichnis)
- my-plugin.php (Haupt-Plugin-Datei)
- uninstall.php (Abschlussskript für die Deinstallation)
- includes/ (Katalog, in dem die Kernfunktionsklassen oder -funktionen abgelegt sind)
- admin/ (Direktorium, in dem der Code für die Backend-Verwaltung gespeichert ist)
- public/ (Katalog, in dem der Code für die Frontend-Seiten der Website gespeichert ist)
- assets/ (Katalog zur Speicherung von JavaScript-, CSS- und Bildressourcen)
- languages/ (Katalog zur Speicherung internationalisierter Übersetzungsdateien)
Diese modulare Struktur macht den Code einfacher zu warten, zu testen und in der Zusammenarbeit zu nutzen.
Core development concepts: Hooks and filters
Der Kern der WordPress-Plugin-Entwicklung ist das “Hook”-System. Hooks ermöglichen es Ihnen, Ihren eigenen Code an bestimmten Stellen während der Ausführung von WordPress einzufügen, um das Standardverhalten zu ändern oder zu erweitern. Es gibt zwei Haupttypen von Hooks: Action Hooks und Filter Hooks.
Mit Action-Hooks Funktionen hinzufügen
Aktionshaken werden ausgeführt, wenn ein bestimmtes Ereignis stattfindet – beispielsweise die Veröffentlichung eines Artikels, das Einloggen eines Benutzers oder das Laden einer Verwaltungsseite. Sie geben keinen Wert an den Aufrufer zurück, sondern dienen dazu, “eine Aktion auszuführen”. Sie können sie daher entsprechend Ihrer Anforderungen nutzen. add_action() Die Funktion “montiert” ihre eigene Funktion an ein Aktionshookup.
Zum Beispiel: Wenn Sie einen benutzerdefinierten Text in den Fußbereich der Frontseite Ihrer Website einfügen möchten, können Sie dies mithilfe der entsprechenden Funktionen tun. wp_footer Dieser Aktionshookup: Im Hauptdatei des Plugins kannst du ihn so schreiben:
Empfohlene Lektüre Die ultimative Anleitung zur Entwicklung von WordPress-Plugins: Von Null auf Eins beim Erstellen benutzerdefinierter Funktionserweiterungen。
function myplugin_add_footer_text() {
echo '<p style="text-align:center;">Vielen Dank, dass Sie diese Website nutzen!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' ); Wenn WordPress auf diese Stelle kommt… wp_footer Wenn die Position ermittelt wird, wird automatisch die von Ihnen registrierte Funktion aufgerufen. myplugin_add_footer_text Funktion.
Inhalte mithilfe von Filter-Hooks ändern
Filter-Hooks dienen dazu, Daten zu modifizieren. Sie bieten die Möglichkeit, Daten vor ihrer Übertragung an eine Datenbank oder in einen Browser zu ändern. Die Filter-Funktionen müssen die geänderten Werte zurückgeben. add_filter() Eine Funktion zur Registrierung von Filtern.
Ein häufiges Beispiel ist die Änderung von Artikelüberschriften. Angenommen, Sie möchten nach allen Artikelüberschriften automatisch ein Markenzeichen™ hinzufügen, dann können Sie dazu folgende Methode verwenden: the_title Filter:
function myplugin_modify_post_title( $title, $post_id ) {
// 确保只在主循环且不是管理后台中修改
if ( ! is_admin() && in_the_loop() ) {
$title = $title . ' ™';
}
return $title;
}
add_filter( 'the_title', 'myplugin_modify_post_title', 10, 2 ); Die Parameter hier 10 Es ist die Priorität (je kleiner die Zahl, desto eher wird sie ausgeführt).2 Das bedeutet, dass unsere Callback-Funktion zwei Parameter entgegennimmt.$title und $post_id)。
Erstellen einer Plugin-Verwaltungseite
Viele Plugins benötigen eine Konfigurationsseite im WordPress-Administrationsbereich, damit Benutzer Optionen einstellen können. WordPress bietet eine umfangreiche API zur Erstellung von Hauptmenüs und Untermenüs.
Hinzufügen des obersten Verwaltungsmenüs
Sie können es verwenden. add_menu_page() Die Funktion erstellt ein separates Verwaltungsmenü für Ihr Plugin. Sie benötigt mehrere Parameter, darunter die Seiteüberschrift, die Menüüberschrift, die Benutzerrechte, einen Menü-Alias sowie eine Rückruffunktion.
Empfohlene Lektüre Die vollständige Anleitung zur Entwicklung von WordPress-Plugins: Ein praktischer Leitfaden von den Grundlagen bis hin zur Expertenebene。
Der folgende Code zeigt, wie man eine einfache Hauptmenüseite hinzufügt:
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限(管理员)
'myplugin-settings', // 菜单别名(URL中的slug)
'myplugin_settings_page', // 用于输出页面内容的回调函数
'dashicons-admin-generic', // 菜单图标(使用Dashicons)
30 // 菜单位置
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
// 定义输出页面内容的回调函数
function myplugin_settings_page() {
?>
<div class="wrap">
<h1>\n</h1>
<form action="/de/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段和安全 nonce 字段
settings_fields( 'myplugin_options' );
do_settings_sections( 'myplugin-settings' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="de"/></form>
</div>
<?php
} Mithilfe der Settings-API werden Optionen erstellt.
Die manuelle Verarbeitung von Formularabgaben und -validierungen ist aufwendig und unsicher. Die WordPress-Settings-API bietet eine standardisierte Methode zur Registrierung, Validierung und Speicherung von Einstellungen. Dafür werden drei Hauptfunktionen verwendet:register_setting()、add_settings_section() und add_settings_field()。
Die folgenden Beispiele zeigen, wie man eine Einstellungsgruppe sowie ein Textfeld registriert:
function myplugin_settings_init() {
// 注册一个新的设置组 “myplugin_options” 到 “reading” 页面(这里我们用自己的页面)
register_setting(
'myplugin-settings', // 选项组,通常与页面别名一致
'myplugin_options', // 存储在 wp_options 表中的选项名
'myplugin_sanitize_callback' // 可选的清理回调函数
);
// 在页面中添加一个区域
add_settings_section(
'myplugin_section_main', // 区域的ID
'主要设置', // 区域标题
'myplugin_section_callback', // 区域描述的回调函数
'myplugin-settings' // 页面别名
);
// 向区域中添加一个字段
add_settings_field(
'myplugin_field_greeting', // 字段ID
'问候语', // 字段标签
'myplugin_field_greeting_callback', // 用于输出字段HTML的回调函数
'myplugin-settings', // 页面别名
'myplugin_section_main', // 区域ID
[ 'label_for' => 'myplugin_field_greeting' ] // 额外参数
);
}
add_action( 'admin_init', 'myplugin_settings_init' );
// 字段HTML的回调函数
function myplugin_field_greeting_callback() {
$options = get_option( 'myplugin_options' );
$value = isset( $options['greeting'] ) ? $options['greeting'] : '你好,世界!';
echo '<input type="text" id="myplugin_field_greeting" name="myplugin_options[greeting]" value="' . esc_attr( $value ) . '" class="regular-text" />';
} Plugin-Sicherheit und bewährte Praktiken
Es ist sehr wichtig, einen beliebten Plugin zu entwickeln, bei dem Sicherheit und Codequalität an erster Stelle stehen. Unsichere Plugins können zu einem Einfallstor für Angriffe auf eine Website werden.
Datenvalidierung, -bereinigung und -vermeidung
Vertrauen Sie niemals den von Benutzern eingegebenen Daten oder den Daten aus der Datenbank. Vor der Verarbeitung aller Daten müssen diese geprüft (Validiert), gereinigt (Sanitiert) und entsprechend kodiert (Escapet) werden.
- Überprüfung: Überprüfen Sie, ob die Daten dem erwarteten Format oder den erwarteten Regeln entsprechen (z. B. ob es sich um eine E-Mail-Adresse, eine Zahl usw. handelt). Verwenden Sie Funktionen wie
is_email()、ctype_digit()Oder reguläre Ausdrücke. - Reinigung: Bevor Daten in eine Datenbank gespeichert oder für andere Zwecke verwendet werden, werden ungesicherte oder nicht benötigte Teile daraus entfernt. Für verschiedene Arten von Daten werden entsprechende Reinigungsfunktionen eingesetzt.
sanitize_text_field()(Die Angabe „(Für den Text)“ wird in der Übersetzung beibehalten, da sie klar darauf hinweist, dass die Informationen für die Textverarbeitung bestimmt sind.)sanitize_email()(Die Angabe wird für E-Mails verwendet.)intval()(Die Angabe gilt für Ganzzahlen.) - Entkommen: Stellen Sie sicher, dass Daten beim Ausgeben in HTML, JavaScript oder URLs sicher codiert werden, um Cross-Site-Scripting (XSS)-Angriffe zu verhindern. Verwenden Sie Funktionen wie
esc_html()、esc_attr()、esc_url()undwp_kses()。
Zum Beispiel beim Speichern und Ausgeben der Grußoptionen, die wir zuvor erstellt haben:
// 在保存设置时的清理回调函数中
function myplugin_sanitize_callback( $input ) {
$sanitized = [];
if ( isset( $input['greeting'] ) ) {
// 清理文本输入
$sanitized['greeting'] = sanitize_text_field( $input['greeting'] );
}
return $sanitized;
}
// 在前台输出问候语时
function myplugin_display_greeting() {
$options = get_option( 'myplugin_options' );
$greeting = isset( $options['greeting'] ) ? $options['greeting'] : '你好,世界!';
// 在输出到HTML前进行转义
echo '<div class="greeting">'`. esc_html($greeting).`'</div>';
} Internationalisierungsfunktionen implementieren
Damit Ihr Plugin von Nutzern auf der ganzen Welt verwendet werden kann, muss es internationalisiert (i18n) sein. Das bedeutet, dass alle für die Benutzer bestimmten Zeichenketten in Funktionen für die Übersetzung eingebettet werden müssen, damit sie in andere Sprachen übersetzt werden können.
WordPress verwendet das GNU gettext-Framework. Die zentralen Funktionen für die Übersetzung sind… __()(Die Zeichenkette wird verwendet, um die übersetzte Version des Textes zu erhalten.) _e()(Die Übersetzung erfolgt direkt aus dem gegebenen Text.) Sie müssen für Ihr Plugin einen eindeutigen Textbereich („Text Domain“) festlegen; dieser Textbereich wurde bereits im Plugin-Header definiert.
Im Code solltest du dies so verwenden:
// 获取翻译后的字符串并赋值给变量
$message = __( '感谢你使用我的插件!', 'my-greeting-plugin' );
// 直接输出翻译后的字符串
_e( '设置已成功保存。', 'my-greeting-plugin' );
// 带占位符的翻译
printf(
__( '欢迎,%s!', 'my-greeting-plugin' ),
esc_html( $username )
); Danach kannst du Tools wie Poedit verwenden, um diese Strings aus dem Code zu extrahieren und daraus neue Inhalte zu erstellen. .pot Template-Dateien – Übersetzer können darauf basierend Übersetzungen in verschiedenen Sprachen erstellen. .po und .mo Die Datei wird erstellt und im Plugin-Ordner abgelegt. /languages/ Im Verzeichnis.
Zusammenfassungen
Die Entwicklung von WordPress-Plugins ist ein leistungsfähiges und flexibles Feld, das Entwicklern die Möglichkeit bietet, WordPress tiefgreifend anzupassen und zu erweitern. Von der Grundverständnis der grundlegenden Pluginstruktur und des Hook-Systems über die Erstellung interaktiver Verwaltungsoberflächen bis hin zur Einhaltung strenger Sicherheits- und Internationalisierungsrichtlinien – jedes Schritt ist entscheidend für die Entwicklung hochwertiger, wartbarer und beliebter Plugins. Denken Sie daran: Der Schlüssel liegt darin, die umfangreichen APIs von WordPress zu nutzen, anstatt sie zu umgehen. Durch die modulare Organisation des Codes, eine sorgfältige Handhabung der Daten sowie die Berücksichtigung von Multilingualität von Anfang an, wird Ihr Plugin nicht nur leistungsfähig, sondern auch sicher, professionell und für eine globale Verbreitung geeignet sein.
FAQ Häufig gestellte Fragen
Wie viele Dateien benötigt mindestens ein WordPress-Plugin?
Ein Plugin benötigt in der Regel mindestens eine PHP-Datei. Solange diese Datei die korrekten Kommentare zum Plugin-Header enthält, kann WordPress das Plugin in der Liste der verfügbaren Plugins im Hintergrund erkennen und aktivieren. Diese einzige Datei kann den gesamten Code des Plugins enthalten.
Wie kann man verhindern, dass die Namen von Plugins mit denen anderer Plugins kollidieren?
Um zu verhindern, dass Funktionsnamen, Klassennamen oder Konstantennamen mit anderen Plugins oder Themes konfliktieren, solltest du einen eindeutigen Präfix verwenden. In der Regel kann dieses Präfix auf dem Namen deines Plugins oder einer Abkürzung davon basieren. Zum Beispiel, wenn dein Plugin “Awesome Slider” heißt, könntest du folgendes Präfix verwenden: as_ oder awesome_slider_ Als Präfix für alle Funktionen und Klassen. Für Klassennamen könnte man eine einzigartigere, räumbezogene („Namespace“-)Struktur in Betracht ziehen.
Wie wird die Datenbank bei der Deinstallation eines Plugins gereinigt?
WordPress bietet zwei Möglichkeiten, um die Reinigungsarbeiten beim Deinstallieren von Plugins zu bewältigen. Die erste Methode besteht darin, einen Deinstall-Hook zu registrieren – dies erfolgt in Ihrer Haupt-Plugin-Datei. register_uninstall_hook() Die Funktion legt eine Callback-Funktion fest, um die von dem Plugin erstellten Datentabellen und Optionen zu löschen. Die zweite und empfohlene Methode besteht darin, eine separate (unabhängige) Funktion zu erstellen. uninstall.php Datei: Wenn ein Benutzer ein Plugin über die WordPress-Backend-Verwaltung löscht, führt WordPress automatisch den Code in dieser Datei aus. In dieser Datei müssen Sie die Konstanten überprüfen. WP_UNINSTALL_PLUGIN Ob alle Plugindaten definiert wurden und anschließend sicher gelöscht werden sollen…
Wie sollte ich JavaScript- und CSS-Dateien zu meinem Plugin hinzufügen?
Sie sollten die von WordPress bereitgestellten Warteschlangenfunktionen verwenden, um Skripte und Stylesheets korrekt hinzuzufügen, anstatt sie direkt in das HTML zu einfügen. <script> oder <link> Tags. Für Frontend-Ressourcen werden Tags verwendet. wp_enqueue_script() und wp_enqueue_style() Funktionen und deren Einbindung in wp_enqueue_scripts Auf den Aktionshaken. Für Ressourcen im Management-Backend werden sie dann montiert. admin_enqueue_scripts Auf dem Haken. Dadurch wird sichergestellt, dass die Abhängigkeiten korrekt behandelt werden und eine mehrfache Ladung derselben Ressource vermieden wird.
Wie führt man die Debugging-Phase bei der Entwicklung von Plugins durch?
Zuerst stellen Sie sicher, dass in Ihrer… wp-config.php Aktivieren Sie im Dokument den WordPress-Debug-Modus. Setzen Sie WP_DEBUG Die Konstante ist auf trueSie können auch mehrere Funktionen gleichzeitig aktivieren. WP_DEBUG_LOG(Erstellen eines Fehlerprotokolls in einer Datei) und WP_DEBUG_DISPLAY(Fehler wird auf dem Bildschirm angezeigt.) Verwenden Sie… error_log() Die Funktion protokolliert benutzerdefinierte Debugging-Informationen im Server-Fehlerprotokoll. Darüber hinaus können Sie die Konsole sowie das Netzwerk-Panel der Browser-Entwicklungstools nutzen, um JavaScript- und AJAX-Anfragen zu debuggen. Für komplexe Logiken ist es sinnvoll, professionelle PHP-Debugging-Tools wie Xdebug einzusetzen.
Was kommt als Nächstes, was kommt als Nächstes?
Erweiterte Lektüre und praktische Kenntnisse
Die folgenden Artikel stehen im Zusammenhang mit dem Thema dieses Artikels und eignen sich für eine vertiefte Lektüre. Oft ist es besser, mit dem Artikel zu beginnen, der Ihrem aktuellen Problem am nächsten kommt, und dann nach und nach die umliegenden Themen zu behandeln.
- Wie wählt und passt man ein perfektes WordPress-Theme für sich selbst aus?
- WordPress-Plugin-Entwicklungshandbuch: Von Null zu Eins – Erstellen Sie Ihr erstes benutzerdefinierte Plugin
- Was ist ein WordPress-Subtheme?
- Wie man ein WordPress-Plugin-Entwickler wird: Ein umfassender Leitfaden von Grund auf
- Vom Nullpunkt zum Erfolg: Ein umfassender Leitfaden und praktische Tipps für das Erstellen professioneller Websites mit WordPress