Vorbereitungsarbeiten und Umgebungseinstellungen
Bevor Sie mit dem Schreiben von Code beginnen, benötigen Sie eine geeignete Entwicklungsumgebung. Dazu gehören eine lokale WordPress-Installation, ein Code-Editor sowie grundlegende Kenntnisse in PHP. Für die lokale Entwicklung werden Tools wie XAMPP, MAMP oder Local by Flywheel empfohlen – sie ermöglichen es, schnell eine Serverumgebung mit PHP und MySQL auf Ihrem lokalen Computer einzurichten.
Erstellen Sie den Grundordner sowie die grundlegenden Dateien für das Plugin.
Jedes WordPress-Plugin muss eine Hauptdatei haben, die als Einstiegspunkt für das Plugin dient. Zuerst müssen Sie diese Hauptdatei in WordPress erstellen bzw. anpassen. wp-content/plugins Erstellen Sie in dem Verzeichnis ein neues Verzeichnis, zum Beispiel… my-first-pluginDann erstellen Sie innerhalb dieses Ordners eine Haupt-PHP-Datei, die in der Regel denselben Namen wie der Ordner trägt. my-first-plugin.php。
Am Anfang dieser Hauptdatei muss ein standardisiertes Kommentarfeld mit Informationen zum Plugin enthalten sein. WordPress nutzt diese Informationen, um Ihr Plugin in der Backend-Verwaltungsoberfläche zu erkennen und anzuzeigen.
Empfohlene Lektüre Vom Nullen zum Einzelnen: Eine Schritt-für-Schritt-Anleitung, um die Kerntechniken der WordPress-Plugin-Entwicklung zu erlernen。
<?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
* Domain Path: /languages
*/ Verständnis der grundlegenden Struktur der Entwicklung von WordPress-Plugins
Ein voll funktionsfähiges Plugin umfasst in der Regel mehr als eine Datei. Neben der Hauptdatei können auch weitere Ressourcen wie JavaScript-Dateien, CSS-Dateien, Bilder sowie Sprachdateien für die Internationalisierung vorhanden sein. Eine sinnvolle Verzeichnisstruktur erleichtert die Organisation und Wartung des Codes.
Eine empfohlene Struktur sieht wie folgt aus:
- my-first-plugin/ (Plugin-Verzeichnis)
- my-first-plugin.php (Hauptdatei)
- includes/ (Speichern von Dateien mit Kernfunktionen oder Funktionen)
- admin/ (Geht um den Code, der mit der Backend-Verwaltungsoberfläche zusammenhängt)
- public/ (Speichert Code, der für die Frontend-Anzeige relevant ist)
- assets/ (Speichert Ressourcen wie CSS, JavaScript, Bilder usw.)
- languages/ (Speichert die Dateien mit internationalisierten Übersetzungen)
Schreiben von Kern-PHP-Code
Die gesamte Funktionalität der Plugins wird durch PHP-Code implementiert. WordPress stellt eine große Anzahl von…动作钩子und过滤器钩子Dies ist die Grundlage für die Interaktion zwischen Plugins und dem WordPress-Kern.
Implementieren Sie eine einfache Funktion, die aus kurzen Codezeilen besteht.
Shortcodes sind leistungsstarke Werkzeuge, die es Nutzern ermöglichen, Plug-in-Funktionen bequem in Artikel oder Seiten einzubetten. Wir werden nun einen einfachen Shortcode implementieren, der eine Begrüßung auf der Seite anzeigt.
In Ihrer Hauptdatei… my-first-plugin.php Unter den Kopfkommentaren fügen Sie die folgenden Funktionen und Hooks hinzu:
Empfohlene Lektüre Einführende Analyse der WordPress-Plugin-Entwicklung: Von Null an Ihr erstes Funktionserweiterungspaket erstellen。
// 注册短代码
function mfp_greeting_shortcode( $atts ) {
// 使用 shortcode_atts 设置默认参数并合并用户传入的参数
$atts = shortcode_atts( array(
'name' => '访客',
), $atts, 'mfp_greeting' );
// 返回要显示的内容
return '<p>Hallo, '. esc_html($atts['name'])'. ‘! Willkommen bei der Nutzung meines ersten Plugins.</p>'php
add_shortcode('mfp_greeting', 'mfp_greeting_shortcode'); Jetzt können Benutzer in der Artikel-Editor-Software Text eingeben. [mfp_greeting name=“小明”]Dann wird an der Frontend-Seite angezeigt: “Hallo, Xiaoming! Willkommen bei der Nutzung meines ersten Plugins.”
Einen Einstellungsparameter in die Backend-Software hinzufügen.
Um die Funktionen eines Plugins konfigurierbar zu machen, müssen wir in der Regel eine Einstellungsseite hinzufügen. Hier wird gezeigt, wie man eine Untermenüseite zum “Einstellungen”-Menü hinzufügt.
Zunächst verwenden wir… add_action Die Hook-Funktionen werden beim Initialisieren des Administrators registriert und eingerichtet.
// 初始化插件设置
function mfp_settings_init() {
// 注册一个新的设置 section
add_settings_section(
'mfp_settings_section', // section ID
'我的插件设置', // 标题
'mfp_settings_section_callback', // 回调函数,用于输出 section 描述
'general' // 显示在哪个设置页,这里是“常规”设置页
);
// 在 section 内注册一个字段
add_settings_field(
'mfp_default_greeting', // 字段 ID
'默认问候人名', // 字段标题
'mfp_default_greeting_callback', // 渲染字段输入框的回调函数
'general', // 设置页面
'mfp_settings_section' // 所属 section
);
// 在 WordPress 的 `option` 表中注册这个设置
register_setting( 'general', 'mfp_default_greeting' );
}
add_action( 'admin_init', 'mfp_settings_init' ); Anschließend definieren Sie die beiden oben genannten Callback-Funktionen, die zur Anzeige der Benutzeroberfläche verwendet werden:
// Section 描述的回调函数
function mfp_settings_section_callback() {
echo '<p>Hier konfiguriere ich die relevanten Optionen für meinen ersten Plugin.</p>';
}
// 字段输入框的回调函数
function mfp_default_greeting_callback() {
// 从数据库获取已保存的值,如果没有则使用默认值
$option = get_option( 'mfp_default_greeting', 'WordPress 用户' );
// 输出一个输入框
echo '<input type="text" name="mfp_default_greeting" value="' . esc_attr( $option ) . '" />';
} Jetzt können Sie diese Einstellungsoption am unteren Ende der Seite “Einstellungen -> Allgemein” im WordPress-Backend sehen.
Frontend-Ressourcenverwaltung und Ajax-Interaktionen
Moderne Plugins benötigen in der Regel ihre eigenen Styles sowie Interaktionslogiken. WordPress bietet standardisierte Methoden, um CSS- und JavaScript-Dateien sicher zu registrieren und zu laden.
Empfohlene Lektüre Vom Nullpunkt aus: Warum sich für die Entwicklung von WordPress-Plugins entscheiden?。
Sichere Ladung von CSS und JavaScript
Verwende niemals direkt in deinen PHP-Dateien… <link> oder <script> Die Ressourcennachweise werden in den Tags hartcodiert. Es sollte stattdessen verwendet werden… wp_enqueue_style und wp_enqueue_script Funktion.
// 注册并加载前端资源
function mfp_enqueue_public_assets() {
// 加载一个 CSS 文件
wp_enqueue_style(
'mfp-public-style', // 样式表句柄
plugin_dir_url( __FILE__ ) . 'assets/css/public-style.css', // 样式表 URL
array(), // 依赖项
'1.0.0' // 版本号,可用于清除缓存
);
// 加载一个 JavaScript 文件
wp_enqueue_script(
'mfp-public-script', // 脚本句柄
plugin_dir_url( __FILE__ ) . 'assets/js/public-script.js', // 脚本 URL
array( 'jquery' ), // 依赖项,这里依赖 jQuery
'1.0.0',
true // 是否在页面底部加载
);
// 重要:将 PHP 变量安全地传递到 JavaScript
wp_localize_script(
'mfp-public-script',
'mfp_ajax_object', // 在 JS 中访问的对象名
array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'mfp_ajax_nonce' ),
'default_name' => get_option( 'mfp_default_greeting', 'WordPress 用户' )
)
);
}
// 在前端页面加载资源
add_action( 'wp_enqueue_scripts', 'mfp_enqueue_public_assets' );
// 在后台管理页面加载资源(如果需要)
// add_action( 'admin_enqueue_scripts', 'mfp_enqueue_admin_assets' ); Eine einfache Ajax-Anfrage umsetzen
Ajax ermöglicht die Interaktion mit dem Server, ohne dass die Seite neu geladen werden muss. WordPress verfügt über einen integrierten Ajax-Handler.
Zunächst einmal, in der Frontend-JavaScript-Datei… public-script.js Eine Anfrage wird an folgende Adresse gesendet:
jQuery(document).ready(function($) {
$('#my-button').on('click', function(e) {
e.preventDefault();
$.post(
mfp_ajax_object.ajax_url, // WordPress 提供的 Ajax URL
{
action: 'mfp_get_server_time', // 触发的 PHP 钩子标识
nonce: mfp_ajax_object.nonce, // 安全随机数
},
function(response) {
if (response.success) {
$('#result-container').html('服务器时间:' + response.data);
} else {
alert('请求失败:' + response.data);
}
}
);
});
}); Anschließend wird diese Anfrage auf der PHP-Seite verarbeitet. Es sind separate Verarbeitungsfunktionen erforderlich – eine für angemeldete Benutzer und eine für nicht angemeldete Benutzer – entweder getrennt oder gleichzeitig.
// 处理 Ajax 请求的函数
function mfp_ajax_get_server_time() {
// 验证 nonce,防止 CSRF 攻击
check_ajax_referer( 'mfp_ajax_nonce', 'nonce' );
// 处理逻辑
$server_time = current_time( 'mysql' );
// 返回成功响应(JSON 格式)
wp_send_json_success( $server_time );
}
// 为登录用户注册处理函数
add_action( 'wp_ajax_mfp_get_server_time', 'mfp_ajax_get_server_time' );
// 为未登录用户注册处理函数(如果功能允许)
add_action( 'wp_ajax_nopriv_mfp_get_server_time', 'mfp_ajax_get_server_time' ); Plugin-Internationalisierung und Vorbereitung auf die Veröffentlichung
Damit Ihr Plugin von WordPress-Nutzern auf der ganzen Welt genutzt werden kann, ist die Internationalisierung (i18n) ein unerlässlicher Schritt. Gleichzeitig ist es auch von großer Bedeutung, das Plugin vor der Veröffentlichung gründlich zu testen und zu optimieren.
Die Textübersetzung wird mit der Funktion gettext implementiert.
WordPress verwendet das GNU gettext-Framework für die Übersetzung. Alle für die Benutzer bestimmten Zeichenketten müssen mit bestimmten Funktionen umschlossen werden.
Ändern Sie die vorherige Kurzcode-Funktion so, dass sie die Übersetzung unterstützt:
function mfp_greeting_shortcode_i18n( $atts ) {
$atts = shortcode_atts( array(
'name' => __( '访客', 'my-first-plugin' ), // 默认值也可翻译
), $atts, 'mfp_greeting' );
// 使用 sprintf 和 __ 函数组合翻译字符串
return '<p>' . sprintf( __( '你好,%s!欢迎使用我的第一个插件。', 'my-first-plugin' ), esc_html( $atts['name'] ) ) . '</p>'add_shortcode( 'mfp_greeting', 'mfp_greeting_shortcode_i18n' ); Sie benötigen Tools wie Poedit, um alle ähnlichen Elemente in den Plugins zu scannen. __(‘文本’, ‘my-first-plugin’) Eine Zeichenkette, die generiert wird… .pot Eine Vorlagendatei, und anschließend wird für jede Sprache (z. B. Chinesisch) eine entsprechende Version erstellt. .po Und das kompilierte… .mo Datei, und legen Sie sie hinein. /languages Katalog.
Durchführen der endgültigen Tests sowie der Bereinigung des Codes
Bevor Sie das Plugin veröffentlichen, führen Sie bitte die folgenden Überprüfungen durch:
1. Funktionsprüfung: Aktivieren Sie das Plugin in einer brandneuen WordPress-Installation und überprüfen Sie, ob alle Funktionen (Shortcodes, Einstellungen, Ajax usw.) wie erwartet funktionieren.
2. Code Review: Überprüfen Sie, ob bei allen Benutzereingaben die entsprechenden Sicherheitsmaßnahmen angewendet wurden. esc_html, esc_attr, wp_kses_post Sicherheitshalber sollten Funktionen wie diese zur Dekodierung und Kodierung von Daten verwendet werden. Wird dies bei allen Datenbankabfragen berücksichtigt? $wpdb Die Klasse enthält Vorabausführungssätze (Preparation Statements), um SQL-Injection-Angriffe zu verhindern.
3. Leistungsprüfung: Stellen Sie sicher, dass Skripte und Styles nur auf den Seiten geladen werden, auf denen sie tatsächlich benötigt werden (dazu können Bedingungstags wie … verwendet werden). is_admin(), is_single() (Entscheidungen treffen). Vermeiden Sie unnötige Datenbankabfragen bei jedem Seitenladevorgang.
4. Dateien bereinigen: Entfernen Sie den Debugging-Code, überflüssige Kommentare sowie nicht mehr benötigte Dateien, die während der Entwicklung verwendet wurden.
5. README 文件:创建一个详细的 readme.txt Die Datei muss in einem Format erstellt werden, das den Anforderungen von WordPress.org entspricht. Sie sollte eine Beschreibung des Plugins, Anweisungen zur Installation sowie häufig gestellte Fragen enthalten. Dies ist eine erforderliche Datei, um das Plugin in den offiziellen WordPress-Direktorius einzubringen.
Zusammenfassungen
Mit dieser Anleitung haben Sie den Weg von einer leeren Datei bis zur Erstellung eines vollständigen WordPress-Plugins geschafft, das Shortcodes, Backend-Einstellungen, die Ladung von Frontend-Ressourcen, Ajax-Interaktionen sowie Unterstützung für die Internationalisierung bietet. Die wichtigsten Schritte umfassen: Die Einrichtung der Umgebung und die Erstellung der Hauptdatei mit Standard-Headern; die Einbettung von Funktionen mithilfe von Action- und Filter-Hooks; die sichere Verwaltung von Ressourcendateien; die Realisierung asynchroner Kommunikation zwischen Frontend und Backend; sowie die Vorbereitung auf die Übersetzung und Tests für die weltweite Veröffentlichung. Denken Sie daran: Sicherheit (Entschlüsselung, Validierung, Nonces), Leistung (auf Anfrage geladene Ressourcen) und Standards (Befolgung der WordPress-Programmierrichtlinien) sind die drei Säulen der Entwicklung hochwertiger Plugins. Durch kontinuierliches Lernen und die Anwendung fortgeschrittener APIs – wie der Erstellung benutzerdefinierter Artikeltypen, REST-APIs und des Blocks-Editors – wird Ihr Plugin noch leistungsfähiger.
FAQ Häufig gestellte Fragen
Muss die Entwicklung von Plugins objektorientiertes Programmieren verwenden?
Nicht unbedingt. Für einfache Plugins ist die Verwendung von Prozessorientiertem Programmieren (eine Reihe von Funktionen) vollkommen ausreichend und sogar einfacher sowie direkter. Für mittelgroße bis große, komplexe Plugins ist es jedoch empfehlenswerter, objektorientiertes Programmieren (OOP) sowie Klassenstrukturen zu verwenden. Dadurch lässt sich der Code besser organisieren, die Verpackung (Encapsulation) und die Wiederverwendbarkeit der Funktionen verbessern sowie Namenskonflikte vermeiden.
Wie fügt man Fehler in einem WordPress-Plugin hin?
Zunächst stellen Sie sicher, dass auf wp-config.php Die Datei wurde geöffnet. WP_DEBUG und WP_DEBUG_LOG Konstanten – auf diese Weise werden die Fehlermeldungen aufgezeichnet. /wp-content/debug.log Die Datei wird in der Speicherung aufbewahrt, aber dem Benutzer nicht angezeigt. Zweitens kann man… error_log() Die Funktion gibt den Wert der Variablen in die Protokolle aus. Für Ajax-Anfragen oder komplexe Logiken sind die “Netzwerk”- und “Konsolle”-Bereiche in den Entwicklertools des Browsers unverzichtbare Hilfsmittel für das Debuggen.
Wie kann mein Plugin mit dem Theme sowie anderen Plugins kompatibel sein?
Die besten Praktiken zur Beibehaltung der Kompatibilität sind: Die strikte Einhaltung der offiziellen WordPress-API und der Kodierstandards; sowie das Hinzufügen eines eindeutigen Präfixes zu den Namen Ihrer Funktionen, Klassen und Aktionshooks. mfp_Damit Konflikte vermieden werden, sollten Sie vor der Verwendung jeder globalen Variable oder Funktion überprüfen, ob sie bereits existiert. Verwenden Sie dazu geeignete Methoden oder Funktionen. function_exists() oder class_exists()Und erklären Sie in dem Dokument klar, welche Datenbanktabellen durch Ihr Plugin erstellt werden.选项oder 用户元数据。
Welche Voraussetzungen müssen erfüllt sein, um ein Plugin im WordPress.org-Verzeichnis zu veröffentlichen?
Sie benötigen ein WordPress.org-Konto und müssen sicherstellen, dass das Plugin alle offiziellen Anforderungen erfüllt. Dazu gehört: Der Code muss mit der GPL-kompatiblen Lizenz (normalerweise GPLv2+) übereinstimmen; das Plugin muss 100% Open Source sein und darf nicht von externen kostenpflichtigen Diensten abhängig sein, um die Kernfunktionen auszuführen; es muss standardmäßige Formate enthalten. readme.txt In der Datei sowie im Code befindet sich kein bösartiger oder unerwünschter Inhalt. Zudem wurde die Datei von einem manuellen Prüfteam überprüft. Vor der Einreichung lesen Sie bitte sorgfältig die offizielle Plugin-Entwicklungshandbuch und die Einreichungsrichtlinien.
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.
- WordPress-Plugin-Entwicklungshandbuch: Von Null zu Eins – Erstellen Sie Ihr erstes benutzerdefinierte Plugin
- Wie man ein WordPress-Plugin-Entwickler wird: Ein umfassender Leitfaden von Grund auf
- Komplettanleitung zur Entwicklung von WordPress-Plugins: Von der Grundlagenkenntnis bis zur Meisterschaft – Erstellen Sie professionelle Erweiterungen
- WordPress-Plugin-Entwicklung von der Grundlage bis zur Meisterschaft: Erstellen Sie Ihr erstes benutzerdefiniertes Plugin
- Vom Nullpunkt zum Erreichen des ersten Erfolgs: Ein umfassender Leitfaden zur schrittweisen Entwicklung deines ersten WordPress-Plugins