Leitfaden für Anfänger in der WordPress-Plugin-Entwicklung: Erstellen Sie Ihre erste Erweiterung von Grund auf

3-Minuten-Lesung
2026-03-15
2026-06-03
2,263
Ich bekomme eine Provision, wenn du über die untenstehenden Links einkaufst – ohne zusätzliche Kosten für dich.

Vorbereitung der Entwicklungsumgebung für WordPress-Plugins

Bevor Sie mit dem Schreiben von Code beginnen, ist eine geeignete Entwicklungsumgebung von entscheidender Bedeutung. Sie ermöglicht es Ihnen nicht nur, effizient zu arbeiten, sondern simuliert auch die reale Produktionsumgebung und verhindert so Unstimmigkeiten zwischen lokalen und Online-Systemen. Eine typische Entwicklungsumgebung sollte eine lokale Serverumgebung, einen Code-Editor sowie Debugging-Tools enthalten.

Zunächst benötigen Sie eine lokale Serverumgebung, auf der WordPress laufen kann. Es wird empfohlen, integrierte Umgebungspakete wie Laragon, XAMPP oder Local by Flywheel zu verwenden. Diese Tools ermöglichen die einfache Einrichtung von Apache/Nginx, PHP und MySQL mit nur einem Klick und ersparen Ihnen den aufwendigen Konfigurationsprozess. Stellen Sie sicher, dass Ihre PHP-Version mit der aktuellen, gängigen WordPress-Version kompatibel ist – in der Regel wird PHP 7.4 oder eine höhere Version empfohlen. Außerdem sollten Sie im WordPress-Backend unter “Tools” -> “Site Health” überprüfen, ob es wichtige Probleme gibt, die die Entwicklung von Plugins beeinträchtigen könnten.

Zweitens sollten Sie einen leistungsstarken Code-Editor auswählen. Visual Studio Code ist derzeit eine sehr beliebte Wahl – er ist leichtgewichtig, kostenlos und verfügt über eine umfangreiche Sammlung von Erweiterungen, wie z. B. PHP Intelephense (für intelligente Code-Vorschläge) und WordPress Snippet (für vorgefertigte Code-Abschnitte). Eine weitere klassische Option ist PhpStorm, das eine tiefer integrierte Unterstützung für die WordPress-Entwicklung bietet, allerdings handelt es sich dabei um eine kostenpflichtige Software.

Empfohlene Lektüre Von Null auf Eins: Ein vollständiger Leitfaden für die Entwicklung von WordPress-Plugins und bewährte Praktiken

Schließlich ist das Aktivieren des Debug-Modus ein unverzichtbarer Schritt im Entwicklungsprozess. Dies erfolgt durch die Änderung von Dateien im Hauptverzeichnis („Root-Verzeichnis“) von WordPress.wp-config.phpFür die Dateien können Sie eine detaillierte Fehlerberichterstattung aktivieren, die entscheidend ist, um Probleme im Code zu erkennen und zu beheben. Finden Sie die Definitionen in der Datei.WP_DEBUGFügen Sie an der Stelle der Konstanten den folgenden Code hinzu:

UltaHost – WordPress-Hosting-Anbieter
30-tägige Geld-zurück-Garantie, unbegrenztes Bandbreiten- und Datenbankvolumen, kostenlose DDoS-Schutzmaßnahmen sowie ein Rabatt von 501 auf 4 Terabyte bei einer Kaufdauer von 3 Jahren.
// 启用 WordPress 调试模式
define( 'WP_DEBUG', true );
// 将错误记录到 /wp-content/debug.log 文件
define( 'WP_DEBUG_LOG', true );
// 在页面上显示错误(开发环境推荐,生产环境必须关闭)
define( 'WP_DEBUG_DISPLAY', true );

Erstellen Sie Ihre erste Plugin-Datei.

Ein WordPress-Plugin kann so einfach sein, dass es nur aus einer einzigen Datei besteht. Alle Plugins müssen jedoch an einem bestimmten Ort abgelegt werden – in der Regel in einem speziellen Verzeichnis innerhalb des WordPress-Installationsverzeichnisses./wp-content/plugins/Im Verzeichnis kann jedes Plugin eigene Unterverzeichnisse haben – dies erleichtert die Organisation komplexerer Codestrukturen.

Plugin-Header-Anmerkungen

Jeder Hauptdatei eines Plugins muss mit standardisierten PHP-Header-Anmerkungen begonnen werden – so erkennt WordPress die Informationen zum Plugin. Erstellen Sie eine neue Datei und nennen Sie sie…my-first-plugin.phpUnd legen Sie es hinein./wp-content/plugins/my-first-plugin/Im Ordner befinden sich die folgenden Dateien:

<?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
 */

Diese Anmerkung enthält alle Metadaten, die das Plugin auf der “Plugins”-Seite im WordPress-Backend anzeigt. Darunter befinden sich…Text DomainundDomain PathVorbereitung der Internationalisierung (i18n) für Plugins.

Eine einfache Funktion implementieren

Jetzt lassen Sie uns eine einfache Funktion für dieses Plugin hinzufügen: Am Ende des Artikelinhalts wird automatisch eine Zeile mit benutzerdefiniertem Text angezeigt. Dafür werden wir WordPress-Tools verwenden.the_contentFilter-Hook. In dem, das Sie gerade erstellt haben…my-first-plugin.phpUnter den Kommentaren am Anfang der Datei fügen Sie die folgende Funktion hinzu:

Empfohlene Lektüre WordPress-Plugin-Entwicklung meistern: Von Null an eigene Funktionen erstellen

// 在文章内容末尾添加自定义文本
function my_first_plugin_add_footer_text( $content ) {
    // 确保只在主循环的单篇文章页面执行
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $footer_text = '<p><em>Vielen Dank fürs Lesen! Dieser Artikel wird Ihnen von “Mein erster Plugin” präsentiert.</em></p>';
        $content .= $footer_text;
    }
    return $content;
}
add_filter( 'the_content', 'my_first_plugin_add_footer_text' );

Nachdem du die Datei gespeichert hast, logge dich in das WordPress-Backend ein und gehe zur Seite “Plugins”. Dort solltest du ein Plugin mit dem Namen “Mein erstes Plugin” sehen. Aktiviere es, und anschließend besuche einen Blogartikel. Du wirst feststellen, dass der von uns festgelegte Text erfolgreich am Ende des Artikels angezeigt wird.

Die Verwendung der WordPress-Core-API

Bei der tiefgreifenden Entwicklung interagierst du häufig mit den verschiedenen APIs, die WordPress bietet. Das Kernstück davon ist das “Hook”-System, das aus “Actions” (Aktionen) und “Filters” (Filtern) besteht.

Verstehen von Aktionshookern (Action Hooks)

Action Hooks ermöglichen es Ihnen, benutzerdefinierten Code zu bestimmten Zeitpunkten auszuführen. Zum Beispiel möchten Sie eine E-Mail senden, um Sie darüber zu informieren, dass ein Artikel veröffentlicht wurde. Dafür können Sie Action Hooks verwenden.publish_post„Aktionen“ (Actions): Das folgende Beispiel zeigt, wie man eine Funktion erstellt, die bei der Veröffentlichung eines Artikels Informationen im Fehlerprotokoll (Error Log) protokolliert.

hosting.com Shared Hosting
Hohe Leistung mit AMD EPYC-CPUs, NVMe-SSD-Speicher und LiteSpeed, fachkundiger Inhouse-Support rund um die Uhr, erweiterte Sicherheitsmaßnahmen einschließlich SSL, Brute-Force-, Malware- und DDoS-Schutz, Einsparungen von bis zu 73%
// 定义文章发布时执行的动作函数
function my_first_plugin_log_post_published( $post_id, $post ) {
    // 避免无限循环和非文章类型
    if ( wp_is_post_revision( $post_id ) || $post->post_type != ‘post’ ) {
        return;
    }
    // 记录日志
    error_log( “文章 ID {$post_id} 已发布,标题为:{$post->post_title}” );
}
// 将函数挂载到 publish_post 动作钩子上
add_action( ‘publish_post’, ‘my_first_plugin_log_post_published’, 10, 2 );

Funktionadd_actionDer dritte Parameter ist die Priorität (Standardwert: 10); je kleiner die Zahl, desto höher die Priorität. Der vierte Parameter gibt die Anzahl der Argumente an, die die Funktion entgegennimmt.

Verstehen der Filter-Hook-Mechanismen

Filter-Hooks dienen dazu, Daten zu modifizieren. Im Kapitel “Erstellen Sie Ihre erste Plugin-Datei” haben wir diese Funktion bereits verwendet.the_contentEs handelt sich dabei um einen Filter-Hook. Dieser nimmt die ursprüngliche Inhaltsdaten entgegen und ermöglicht es Ihnen, diese zu modifizieren, bevor sie wieder zurückgesendet werden. Ein weiteres gängiges Beispiel ist die Änderung der Länge von Artikelauszügen.

// 修改摘要的默认字数
function my_first_plugin_custom_excerpt_length( $length ) {
    return 30; // 将摘要字数改为30字
}
add_filter( ‘excerpt_length’, ‘my_first_plugin_custom_excerpt_length’ );

Hinzufügen eines Eingangsmenüs

Um mit den Nutzern zu interagieren, müssen wir in der Regel eine Menüseite in der Seitenleiste der Administrationsoberfläche von WordPress hinzufügen. Dies kann erfolgen, indem…add_menu_pageFunktionsimplementierung: Der folgende Code fügt dem Plugin eine oberste Einstellungsseite hinzu.

Empfohlene Lektüre Komplettanleitung zum Entwickeln von WordPress-Plugins: Von Null an hochwertige Erweiterungen für WordPress erstellen

// 创建插件管理菜单
function my_first_plugin_add_admin_menu() {
    add_menu_page(
        ‘我的第一个插件设置’, // 页面标题
        ‘我的插件’,           // 菜单标题
        ‘manage_options’,     // 所需权限
        ‘my-first-plugin’,    // 菜单slug
        ‘my_first_plugin_settings_page’, // 回调函数,用于输出页面内容
        ‘dashicons-admin-plugins’, // 图标(可选)
        100                    // 菜单位置(可选)
    );
}
add_action( ‘admin_menu’, ‘my_first_plugin_add_admin_menu’ );

// 设置页面的回调函数
function my_first_plugin_settings_page() {
    ?&gt;
    <div class="“wrap”">
        <h1>Die Einstellungen meines ersten Plugins</h1>
        <p>Hier ist die Einstellungsseite für die Plugins. In Zukunft kannst du hier Formulare und Optionen hinzufügen.</p>
    </div>
    &lt;?php
}

Plugin-Sicherheit und bewährte Praktiken

Beim Entwicklung von Plugins für die Nutzung durch andere darf man Sicherheit und Codequalität nicht vernachlässigen. Die Einhaltung von Best Practices schützt Websites vor Angriffen und stellt sicher, dass die Plugins kompatibel und wartbar sind.

Datensüberprüfung und -entschlüsselung

Vertrauen Sie niemals auf die von Benutzern eingegebenen Daten oder auf Daten aus der Datenbank. Vor der Ausgabe in den Browser müssen diese Daten entschärft („geëncodet“) werden; vor der Speicherung in der Datenbank müssen sie überprüft und gereinigt werden. WordPress bietet zahlreiche Hilfsfunktionen für diese Zwecke.

InterServer Shared Hosting
Shared Hosting $2.50 USD pro Monat, erster Monat $0.1 USD Promo-Code tryinterserver, 461 Cloud-Apps Skripte, ein Klick installieren.
  • Escape output: Verwendungesc_html()esc_attr()esc_url()undwp_kses_post()Funktionen wie diese entschlüsseln Daten je nach Kontext.
  • Verifizieren Sie die Eingabe: Verwenden Sie…sanitize_text_field()sanitize_email()intval()Funktionen wie diese werden verwendet, um die von Benutzern eingereichten Formulardaten zu bereinigen.

Beispielsweise, wenn Sie auf der Einstellungsseite die Verarbeitung von Formulardaten konfigurieren:

$user_input = $_POST[‘some_field’] ?? ‘’; // 使用空合并运算符提供默认值
$clean_input = sanitize_text_field( $user_input ); // 清理数据
update_option( ‘my_plugin_option’, $clean_input ); // 安全存储

Die Verwendung von nicht-CE-Verfahren sowie die Durchführung von Berechtigungsüberprüfungen

Bei der Verarbeitung von Formularanfragen – insbesondere solchen, die von admin-ajax.php oder admin-post.php stammen – muss unbedingt…wp_verify_nonce()Damit die Legitimität der Anfrage überprüft werden kann und Angriffe durch Cross-Site Request Forgery (CSRF) verhindert werden. Gleichzeitig wird…current_user_can()Prüfen Sie, ob der aktuelle Benutzer die Berechtigung hat, die betreffende Aktion auszuführen.

function my_first_plugin_handle_form_submit() {
    // 1. 检查nonce
    if ( ! isset( $_POST[‘my_nonce_field’] ) || ! wp_verify_nonce( $_POST[‘my_nonce_field’], ‘my_action’ ) ) {
        wp_die( ‘安全校验失败!’ );
    }
    // 2. 检查权限
    if ( ! current_user_can( ‘manage_options’ ) ) {
        wp_die( ‘权限不足!’ );
    }
    // 3. 安全地处理数据…
}

Codeorganisation und Internationalisierung

Für komplexe Plugins wird empfohlen, objektorientierte Programmierung (OOP) zur Organisation des Codes zu verwenden und die Funktionen in Klassen zu modularisieren. Dies verbessert die Lesbarkeit und Wiederverwendbarkeit des Codes.

Gleichzeitig sollte von Anfang an für die Internationalisierung des Plugins vorgesorgt werden. Das bedeutet, dass alle für die Benutzer bestimmten Zeichenketten die Übersetzungsfunktionen von WordPress verwenden sollten.__()_e()Verpacken. Wenn wir uns die Kommentare am Anfang des Plugins ansehen, haben wir bereits alles definiert.Text DomainSo sollte es im Code verwendet werden:

$message = __( ‘感谢阅读!本文由“我的第一个插件”为您呈现。’, ‘my-first-plugin’ );

Danach kannst du Tools wie Poedit verwenden, um die Übersetzung zu erstellen..potTemplate-Dateien, die es Übersetzern ermöglichen, Texte in verschiedene Sprachen zu generieren..moDokumente.

Zusammenfassungen

Mit dieser Anleitung hast du den grundlegenden Weg zur Erstellung eines WordPress-Plugins von Grund auf abgeschlossen. Du hast gelernt, wie du eine Entwicklungsumgebung einrichtest, eine Plugin-Datei mit standardmäßigen Kopfnotizen erstellst und die leistungsstarke Hook-Systeme von WordPress nutzt, um Funktionen hinzuzufügen. Wir haben auch besprochen, wie man sicher Verwaltungsmenüs erstellt, Daten verarbeitet, und betont, wie wichtig Sicherheit sowie Internationalisierung sind. Die Entwicklung von Plugins ist ein kontinuierlicher Prozess des Lernens und Übens; der Schlüssel liegt darin, das Hook-System sowie die Sicherheitsrichtlinien von WordPress zu verstehen. Als Nächstes kannst du versuchen, komplexere Funktionen zu entwickeln – wie zum Beispiel benutzerdefinierte Datenbanktabellen zu erstellen, Shortcodes oder Widgets hinzuzufügen oder REST-API-Endpunkte zu implementieren – und so schrittweise ein funktionsreiches, stabiles, kommerziell nutzbares Plugin zu entwickeln.

FAQ Häufig gestellte Fragen

Muss ein Plugin in einem eigenen Ordner abgelegt werden?

Nein, ein Plugin kann auch einfach nur eine einzelne Funktion oder Komponente sein..phpDie Dateien können einfach direkt dort platziert werden./wp-content/plugins/Im Verzeichnis. Es wird jedoch dringend empfohlen, für Plugins, die mehrere Dateien oder Ressourcen (z. B. JS, CSS) enthalten oder die übersetzt werden müssen, einen separaten Ordner zu verwenden, um alle relevanten Dateien zu speichern. Dies macht die Projektstruktur klarer und erleichtert die Verwaltung.

Wie kann ich sicherstellen, dass die Einstellungen meines Plugins in der Datenbank gespeichert werden?

WordPress bietet eine sehr benutzerfreundliche Option-API. Du kannst diese nutzen, um verschiedene Einstellungen und Funktionen des Systems zu verändern oder zu steuern.add_option()get_option()undupdate_option()Es gibt Funktionen zum Hinzufügen, Abrufen und Aktualisieren von Plugin-Einstellungen. Diese Daten werden sicher in WordPress gespeichert.wp_optionsIn einer Datenbanktabelle: Für große Mengen an strukturierten Daten kann es sinnvoll sein, diese zuerst in Arrays oder JSON-Strings zu serialisieren und anschließend zu speichern.

Könnten die von mir entwickelten Plugins mit anderen Plugins in Konflikt geraten?

Es ist möglich – insbesondere wenn die Plugins allgemeine Hook-Methoden, Funktionennamen oder Klassennamen verwenden. Um Konflikte zu vermeiden, sind die folgenden Best Practices zu empfehlen: Fügen Sie allen Ihren Funktionen, Klassen und Variablen ein eindeutiges Präfix hinzu (z. B. eine Abkürzung oder den Namen des Plugins), verwenden Sie den „Plugin-Slug“ als Namensraum (in PHP 5.3+ sind echte Namensräume verfügbar), und wählen Sie bei der Verwendung von Hooks die richtige Priorität aus, um eine erwartete Ausführungsreihenfolge zu gewährleisten.

Mit welchen WordPress-Versionen muss das Plugin kompatibel sein?

Das hängt von deinen Zielnutzern ab. In der Regel wird empfohlen, mit den aktuellen Hauptversionen sowie einer oder zwei vorherigen Versionen kompatibel zu sein. Du kannst dies im Plugin-readme.txtDer Inhalt des Files wurde erfolgreich übertragen bzw. verarbeitet.Requires at least:Felder werden verwendet, um die minimale erforderliche WordPress-Version anzugeben. Während der Entwicklung sollte man die Verwendung von Funktionen vermeiden, die erst in neueren WordPress-Versionen verfügbar sind.function_exists()Eine Kompatibilitätsprüfung durchführen, um den Anwendungsbereich des Plugins zu erweitern.