Das Plugin-System von WordPress bildet den Kern seiner umfassenden Erweiterungsmöglichkeiten. Mit Plugins können Entwickler Webseiten mit allem ausstatten – von einfachen Kontaktformularen bis hin zu komplexen E-Commerce-Funktionen. In diesem Artikel werden Sie Schritt für Schritt durch den gesamten Prozess der Erstellung eines voll funktionsfähigen Plugins geführt, lernen die grundlegende Struktur, die Hook-Mechanismen, die Sicherheitsaspekte sowie bewährte Vorgehensweisen kennen. Am Ende werden Sie ein eigenes Plugin haben, das Sie direkt veröffentlichen oder weiter verwenden können.
Entwicklungsumgebung und Grundlegende Vorbereitungen
Bevor Sie die erste Zeile Code schreiben, ist eine stabile und effiziente Entwicklungsumgebung von entscheidender Bedeutung. Sie ermöglicht es Ihnen, sich voll und ganz auf die logische Strukturierung des Codes zu konzentrieren und hilft dabei, einige häufig vorkommende Fehler zu vermeiden.
Konfiguration der lokalen Entwicklungsumgebung
Es wird empfohlen, lokale Serverumgebungs-Sets wie XAMPP, MAMP oder das professionellere Local by Flywheel zu verwenden. Stellen Sie sicher, dass Ihre PHP-Version (empfohlen: 7.4 oder höher) mit der zu deployenden WordPress-Umgebung kompatibel ist und dass die Debugging-Funktionen aktiviert sind. In WordPress…wp-config.phpDatei, setzen Sie dieWP_DEBUGFürtrueDas wird während der Entwicklungsphase alle Fehler und Warnungen anzeigen und Ihnen dabei helfen, Probleme schnell zu lokalisieren.
Empfohlene Lektüre Einführung in die Entwicklung von WordPress-Plugins: Von Grundlagen bis zum Erstellen professioneller Funktionsmodule。
Plug-in-Datei-Strukturplanung
Ein Standard-Plugin benötigt mindestens eine Hauptdatei. Die übliche Vorgehensweise besteht darin, für das Plugin ein eigenes Verzeichnis zu erstellen, das nach der Kernfunktion des Plugins benannt wird.my-first-pluginIn diesem Ordner trägt die Hauptdatei in der Regel den gleichen Namen wie der Ordner selbst, wobei der Dateiname mit einer bestimmten Endung versehen ist..phpnämlichmy-first-plugin.phpEine klare Struktur erleichtert das Hinzufügen von JavaScript-, CSS-, Sprachpaketen oder Klassendateien später.
Erstellen Sie die Hauptdatei des Plugins sowie die grundlegenden Header-Informationen.
Sowohl der “Einstieg” in die Plugins als auch die Identifizierung der Benutzer basieren auf den Header-Daten, die am Anfang der Hauptdatei befinden. Dies ist entscheidend dafür, dass WordPress die Plugins erkennt und lädt.
Erstellen Sie eine standardisierte Plugin-Hauptdatei.
Am Anfang der Haupt-PHP-Datei muss ein bestimmter PHP-Commentarblock verwendet werden, um Informationen über das Plugin bereitzustellen. Diese Informationen werden auf der “Plugins”-Verwaltungsseite im WordPress-Backend angezeigt.
<?php
/**
* Plugin Name: 我的第一个功能插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个实战指南中创建的示例插件,用于演示核心开发流程。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Darunter befinden sichPlugin NameundText DomainDieser Felder ist erforderlich; die anderen Felder sind optional. Es handelt sich um ein Textfeld.Text DomainZur Unterstützung der Internationalisierung.
Verhindern des direkten Zugriffs auf Dateien
Um den Code der Plugins zu schützen und zu verhindern, dass die Hauptdateien direkt über eine URL abgerufen werden und dadurch mögliche Informationen geleaktet oder Fehler auftreten, muss nach den Kopfinformationen – und vor jedem anderen Code – eine Überprüfung auf direkte Zugriffe hinzugefügt werden.
Empfohlene Lektüre WooCommerce-Plugin-Entwicklungshandbuch: Erstellen Sie Ihren eigenen Online-Shop。
// 防止直接访问
if ( ! defined( 'ABSPATH' ) ) {
exit;
} KonstanteABSPATHEs handelt sich um den absoluten Pfad zum WordPress-Root-Verzeichnis, der bei der Ausführung von WordPress definiert wird. Diese Bedingung stellt sicher, dass der folgende Code nur in einem WordPress-Umfeld ausgeführt wird.
Implementierung der Kernfunktionen sowie der WordPress-Hooks
WordPress bietet durch die beiden mächtigen Mechanismen „Action Hooks“ und „Filter Hooks“ die Möglichkeit, dass Ihr Code zu bestimmten Zeitpunkten in den Kernprozess eingreifen oder Daten verändern kann. Ihr Verständnis und die richtige Anwendung dieser Mechanismen sind entscheidend für die Entwicklung von Plugins.
Mit Action-Hooks Funktionen hinzufügen
Action Hooks ermöglichen es Ihnen, benutzerdefinierten Code auszuführen, wenn bestimmte Ereignisse eintreten. Zum Beispiel könnten Sie damit eine Funktion erstellen, die automatisch das Urheberrecht am Ende des Artikelinhalts anzeigt. Dafür ist die Verwendung von Action Hooks erforderlich.the_contentFilter (die im Grunde Filter-Hooks sind, aber ähnlich wie Action-Hooks verwendet werden) undwp_enqueue_scriptsAction-Hooks werden verwendet, um Ressourcen zu laden.
Zuerst schreiben wir eine Funktion.mfp_add_copyright_noticeUnd mounten Sie es aufthe_contentAuf dem Haken.
// 在文章内容后添加版权声明
function mfp_add_copyright_notice( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$copyright_text = '<p><em>Das Urheberrecht dieses Artikels liegt bei dieser Website. Bei einer Weiterveröffentlichung ist ein Hinweis auf die Quelle erforderlich.</em></p>';
$content .= $copyright_text;
}
return $content;
}
add_filter( 'the_content', 'mfp_add_copyright_notice' ); Die Bedingungsprüfung stellt sicher, dass die Urheberrechtsangabe nur im Hauptzyklus eines einzelnen Artikels auf der Frontend-Seite angezeigt wird und keine Auswirkungen auf die Seite, den Zusammenfassung oder die Backend-Systeme hat.
Daten mithilfe von Filter-Hooks ändern
Filter-Hooks dienen dazu, jegliche an sie übergebenen Daten zu modifizieren. Angenommen, wir möchten bestimmte Teile des Website-Titels ändern – in diesem Fall könnten wir eine Funktion erstellen und diese hinzufügen.wp_titleOder etwas Moderneres.document_title_partsFilter.
Empfohlene Lektüre Detaillierte Beschreibung des gesamten Entwicklungsprozesses für WordPress-Plugins: Ein praktischer Leitfaden von der Einführung bis zur Meisterschaft。
// 修改网站标题后缀
function mfp_modify_title_suffix( $title ) {
if ( is_home() ) {
$title['suffix'] = ' | 我的精彩博客';
}
return $title;
}
add_filter( 'document_title_parts', 'mfp_modify_title_suffix' ); Sichere Einführung von Skripten und Styles
Um Frontend-Styles oder Interaktionen für Plugins hinzuzufügen, muss man die von WordPress empfohlenen Methoden verwenden.wp_enqueue_style()undwp_enqueue_script()Funktionen, und durchwp_enqueue_scriptsHook-Call.
// 注册并排队插件的前端样式
function mfp_enqueue_frontend_assets() {
// 获取插件目录的URL
$plugin_url = plugin_dir_url( __FILE__ );
// 排队一个CSS文件
wp_enqueue_style(
'mfp-frontend-style',
$plugin_url . 'assets/css/frontend.css',
array(),
'1.0.0'
);
// 排队一个JS文件,并依赖jQuery
wp_enqueue_script(
'mfp-frontend-script',
$plugin_url . 'assets/js/frontend.js',
array( 'jquery' ),
'1.0.0',
true // 在页脚加载
);
}
add_action( 'wp_enqueue_scripts', 'mfp_enqueue_frontend_assets' ); Erstellen einer Verwaltungsseite sowie von Einstellungsoptionen
Viele Plugins benötigen Konfigurationsmöglichkeiten für die Benutzer. WordPress stellt eine API zur Verfügung, mit der man Verwaltungsmenüs und Optionenseiten sicher und standardisiert erstellen kann.
\nHinzufügen eines Verwaltungsmenüs
Zunächst verwenden Sieadd_action( ‘admin_menu’, … )Registrieren Sie einen neuen Menüeintrag oder einen Unter-Menüeintrag für die Verwaltung. Die folgende Funktion…mfp_create_admin_menuUnter dem Hauptmenü “Einstellungen” wird eine Untermenüseite hinzugefügt.
// 创建插件管理菜单
function mfp_create_admin_menu() {
add_options_page(
‘我的插件设置’, // 页面标题
‘我的插件’, // 菜单标题
‘manage_options’, // 权限要求
‘mfp-settings’, // 菜单slug
‘mfp_settings_page_html’ // 用于输出页面内容的回调函数
);
}
add_action( ‘admin_menu’, ‘mfp_create_admin_menu’ ); Erstellen einer Einstellungsseite sowie von Feldern
Als Nächstes muss eine Callback-Funktion definiert werden.mfp_settings_page_htmlDie Seiteinhalte werden gerendert, und mithilfe der bereitgestellten API wird eine Einstellungsgruppe, eine Option sowie spezifische Felder registriert.
// 设置页面的HTML输出
function mfp_settings_page_html() {
// 检查用户权限
if ( ! current_user_can( ‘manage_options’ ) ) {
return;
}
?>
<div class="“wrap”">
<h1>\n</h1>
<form action="/de/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
<?php
// 输出设置字段、非ce等
settings_fields( ‘mfp_options_group’ );
do_settings_sections( ‘mfp-settings’ );
submit_button( ‘保存设置’ );
?>
<input type="hidden" name="trp-form-language" value="de"/></form>
</div>
‘mfp_field_copyright_text’ )
);
}
add_action( ‘admin_init’, ‘mfp_settings_init’ );
// 渲染版权文本文档字段
function mfp_field_copyright_text_html() {
$options = get_option( ‘mfp_options’ );
$value = $options[‘copyright_text’] ?? ‘默认版权文本’; // PHP 7.0+ 空合并运算符
?>
<input type="“text”"
id="“mfp_field_copyright_text”"
name="“mfp_options[copyright_text]”"
value="“NO NUMERIC NOISE KEY" 1000”
class="“regular-text”">
<?php
} Jetzt können Sie das, was Sie zuvor bereits konnten…mfp_add_copyright_noticeIn der Funktion wird Folgendes verwendet:get_option( ‘mfp_options’ )[‘copyright_text’]Die Backend-Texte, die durch die Benutzereinstellungen dynamisch abgerufen werden, ermöglichen es, die Funktionen des Plugins konfigurierbar zu machen.
Zusammenfassungen
Dieser Artikel beschreibt ausführlich den vollständigen Prozess der Entwicklung eines WordPress-Plugins von Grund auf. Wir beginnen mit der Einrichtung der Entwicklungsumgebung und der Erstellung einer Hauptdatei, die standardmäßige Kopfinformationen enthält, und betonen die Wichtigkeit von Sicherheitsmaßnahmen. Anschließend gehen wir auf das Kernkonzept der WordPress-Plugin-Entwicklung ein – das Hook-System – einschließlich der Verwendung von Aktionshooks zur Ausführung von Code sowie von Filterhooks zur Modifizierung von Daten – und zeigen außerdem Methoden zur sicheren Ladung von Frontend-Ressourcen auf. Abschließend erstellen wir mithilfe der WordPress-Settings-API eine professionell gestaltete Verwaltungsseite, über die die Funktionen des Plugins von den Nutzern angepasst werden können.
Der gesamte Entwicklungsprozess folgt den WordPress-Codestandards und -Best Practices, einschließlich der Verwendung eindeutiger Funktionsvorwörter, der Datenvalidierung und -Entschlüsselung sowie der Bereitstellung der Grundlagen für die Unterstützung internationaler Sprachen. Nachdem Sie diese grundlegenden Kenntnisse erlangt haben, können Sie die Funktionen Ihrer Plugins unbegrenzt erweitern, indem Sie verschiedene Hooks kombinieren, benutzerdefinierte Datenbanktabellen erstellen, Plugins oder Shortcodes entwickeln.
FAQ Häufig gestellte Fragen
Wie wählt man geeignete Präfixe für Plugin-Funktionen und -Klassen aus?
Alle globalen Funktionen, Klassen, Variablen und Konstanten in den Plugins sollten einen eindeutigen Präfix verwenden, um Namenskonflikte mit anderen Plugins oder Themes zu vermeiden. Das Präfix besteht in der Regel aus einer Abkürzung oder einem Kurznamen des Plugins. Wenn beispielsweise das Plugin den Namen “My First Plugin” trägt, kann das Präfix entsprechend gewählt werden.mfp_odermyfirstplugin_Konsistenz ist von entscheidender Bedeutung.
Warum muss man unbedingt `wp_enqueue_script` verwenden, um Skripte hinzuzufügen?
ausnutzenwp_enqueue_script()undwp_enqueue_style()Es handelt sich um eine von WordPress offiziell empfohlene Methode. Sie ermöglicht die korrekte Verarbeitung von Script-Abhängigkeiten (z. B. jQuery), verhindert das mehrfache Laden derselben Scripte und erlaubt es anderen Plugins oder Themes, diese Funktionen ebenfalls zu nutzen.wp_deregister_script()Um Ihre Skripte sicher zu entfernen oder zu ersetzen, verwenden Sie einfach die entsprechenden Funktionen.Wenn Tags eingefügt werden, können diese Verwaltungsvorteile nicht mehr genutzt werden, und es kann zu Konflikten kommen.
Welche wichtigen Sicherheitsrichtlinien gibt es bei der Entwicklung von Plugins?
Das wichtigste Prinzip ist: Vertrauen Sie niemals den von den Benutzern eingegebenen Daten. Bei allen Daten, die von den Benutzern übermittelt werden, sollten Sie vorsichtig sein und diese stets überprüfen.$_GET、$_POST、$_REQUESTDie Daten, die entweder aus einer Datenbank abgerufen oder auf andere Weise erzeugt wurden, müssen geprüft, bereinigt und enthaltenes Sonderzeichen („Escape-Zeichen“) entfernt werden. Anschließend werden sie zur Erstellung von HTML verwendet.esc_html()、esc_attr()Für die Ausgabe an eine URL wird dies so umgesetzt:esc_url()In SQL-Abfragen ist es unerlässlich, darauf zu achten, dass…$wpdb->prepare()Führen Sie parametrisierte Abfragen durch, um SQL-Injection-Angriffe zu verhindern. Verwenden Sie dabei auch geeignete Sicherheitsmechanismen.current_user_can()Überprüfen Sie die Benutzerrechte.
Wie füge ich Internationalisierungsunterstützung für meine Erweiterung hinzu?
Zunächst muss die Information im Plugin-Header korrekt eingestellt werden.Text DomainundDomain PathDanach sollten an allen Stellen im Code, an denen Zeichenketten übersetzt werden müssen, die entsprechenden Übersetzungen verwendet werden.()Bitte geben Sie den Text zur Übersetzung an, den Sie in das Deutsche haben möchten._e()Führen Sie eine Echo-Übersetzung durch, zum Beispiel…( ‘Hello World’, ‘my-first-plugin’ )Schließlich wird mit einem Tool wie Poedit der Code gescannt, um die entsprechenden Daten zu generieren..potTemplate-Dateien werden erstellt und für verschiedene Sprachen angepasst..pound.moÜbersetzen Sie die Datei und legen Sie sie an der angegebenen Stelle ab./languagesIm Verzeichnis.
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.
- Praktischer Leitfaden für SEO-Optimierung im Jahr 2026: Eine systematische Strategie von der Grundlagenkenntnis bis zur Meisterschaft
- WordPress-Einsteigerhandbuch: Erstelle deine erste professionelle Website von Grund auf
- Warum sollte man einen Online-Shop mit WooCommerce erstellen?
- Warum WordPress wählen – Die zehn wichtigsten Kernvorteile eines Open-Source-CMS
- „WooCommerce in zehn Minuten beherrschen: Ein Leitfaden für den Aufbau eines E-Commerce-Websites – von der Grundlagenkenntnis bis zum Gewinn“