Schritt für Schritt dein erstes WordPress-Plugin erstellen: vom Einstieg bis zur praktischen Entwicklung

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

Grundlagen der WordPress-Plug-in-Entwicklung und Vorbereitung der Umgebung

WordPress-Plugins sind im Grunde genommen eine Sammlung von PHP-Dateien, die die Kernfunktionen von WordPress mithilfe der von WordPress bereitgestellten API erweitern. Ein Plugin kann so einfach sein, dass es nur einen kurzen Code hinzufügt, oder so umfangreich, dass es ein vollständiges Verwaltungssystem erstellt. Vor dem Beginn des Programmierens ist es von entscheidender Bedeutung, die grundlegende Struktur eines Plugins zu verstehen. Jedes Plugin muss eine Hauptdatei haben, die in der Regel nach dem Namen des Plugins benannt ist. my-first-plugin.phpDie Kommentarzeile an der Spitze dieser Datei ist entscheidend dafür, dass WordPress die Plugins erkennt.

Die Entwicklungsumgebung ist die Grundlage für effizientes Arbeiten. Sie müssen eine lokale Testumgebung einrichten, die so weit wie möglich der Online-Umgebung entspricht. Es wird empfohlen, lokale Server-Integrationspakete wie XAMPP, MAMP oder Local by Flywheel zu verwenden. Stellen Sie außerdem sicher, dass Ihr Code-Editor oder Ihre integrierte Entwicklungsumgebung (IDE) die Highlightierung und Fehlersuche von PHP-Code unterstützt – beispielsweise VS Code, PhpStorm oder Sublime Text. Aktivieren Sie in WordPress die entsprechenden Funktionen für die Entwicklungsumgebung.WP_DEBUGMuster sind während der Entwicklungsphase von großer Bedeutung für das Fehlersuchen. Sie können auf der Website verwendet werden, um…wp-config.phpIn der Datei wird dies durch die Definition erreicht.define('WP_DEBUG', true);Kommen Sie und aktivieren Sie es.

Erstellen Sie Ihre erste Plugin-Datei.

Lassen Sie uns mit der Erstellung des einfachsten Plugins beginnen – dieses wird eine benutzerdefinierte Benachrichtigung im Administrationsbereich der Website anzeigen.

Empfohlene Lektüre Leitfaden zur Entwicklung von WordPress-Plugins: Erstellen Sie Ihre eigenen Funktionen von Grund auf.

Erstellen Sie die Hauptdatei des Plugins sowie die Kommentarzeile am Anfang der Datei.

Zunächst einmal, im Verzeichnis Ihrer WordPress-Installation:wp-content/pluginsIm Ordner erstellen Sie einen neuen Ordner mit dem Namen „…“ (füllen Sie den Namen bitte aus).my-first-pluginIn diesem Ordner erstellen Sie eine PHP-Datei mit dem gleichen Namen.my-first-plugin.php

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.

Öffnen Sie diese Datei und fügen Sie den folgenden standardisierten Kommentarblock mit Informationen zum Plugin hinzu. Diese Informationen werden auf der “Plugins”-Verwaltungsseite im WordPress-Backend angezeigt.

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

Nachdem Sie die Datei gespeichert haben, gehen Sie zur “Plugins”-Seite im WordPress-Administrationsbereich. Dort sollten Sie “Mein erstes Plugin” in der Liste der Plugins sehen. Aktivieren Sie es. Obwohl das Plugin noch keine Funktionen ausführt, wurde es erfolgreich von WordPress geladen.

Implementierung einer grundlegenden Benachrichtigungsfunktion im Backend

Jetzt werden wir der Erweiterung die erste Funktion hinzufügen: Eine Begrüßungsnachricht wird an der oberen Seite des Administrationsbereichs angezeigt. Dafür werden wir WordPress-Tools verwenden.admin_noticesHook. Fügen Sie den folgenden Code unter den Kommentarzeilen im Hauptdatei des Plugins hinzu:

// 在管理后台显示自定义通知
function mfp_show_admin_notice() {
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p><?php _e( '欢迎使用“我的第一个插件”!', 'my-first-plugin' ); ?></p>
    </div>
    &lt;?php
}
add_action( &#039;admin_notices&#039;, &#039;mfp_show_admin_notice&#039; );

Code-Erklärung: Wir haben ein Objekt mit dem Namen „…“ erstellt.mfp_show_admin_noticeDie Funktion generiert einen HTML-Benachrichtigungscode, der dem Format des WordPress-Backends entspricht._e()Die Funktion dient der Unterstützung zukünftiger Internationalisierungsmaßnahmen (i18n). Abschließend…add_action()Die Funktion montiert unsere benutzerdefinierte Funktion in WordPress.admin_noticesAuf diesem “Haken”. Nachdem du die Datei gespeichert hast, aktualisiere die WordPress-Backend-Seite – dann wirst du die grüne Meldung mit der Bestätigung des Erfolgs sehen.

Empfohlene Lektüre Eine vollständige Anleitung zur Entwicklung von WordPress-Plugins: Von den Grundlagen bis hin zu fortgeschrittenen praktischen Tutorials

Eingehende Entwicklung der Kernfunktionen von Plugins

Nachdem wir die Grundstruktur beherrscht haben, können wir praktischere Funktionen entwickeln. Eine häufige Anforderung besteht darin, am Ende des Artikelinhalts automatisch einen benutzerdefinierten Text hinzuzufügen.

Die Inhalte eines Artikels mit einem Filter ändern.

WordPress bietet eine große Anzahl von “Filtern” zur Veränderung verschiedener Daten. Um Text nach dem Inhalt eines Artikels hinzuzufügen, werden wir einen dieser Filter verwenden.the_contentFilter: Fügen Sie die folgende neue Funktion in die Hauptdatei des Plugins hinzu:

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

Diese Funktion nimmt die ursprüngliche…$contentDurch bedingte Abfragen wird sichergestellt, dass unser benutzerdefinierter HTML-Text nur auf der jeweiligen Artikelseite und nur dann hinzugefügt wird, wenn die Seite auch im Hauptabfrageprozess berücksichtigt wird. Anschließend wird der modifizierte Inhalt zurückgegeben. Dieser Ansatz ist nicht invasiv und verändert den ursprünglichen Inhalt in der Datenbank nicht.

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%

Erstellen einer einfachen Verwaltungsseiten-Einstellung

Damit Benutzer den Text, der am Ende eines Artikels hinzugefügt werden soll, selbst definieren können, müssen wir eine Einstellungsseite für das Plugin erstellen. Dies umfasst mehrere Schritte: Das Registrieren eines Menüs, die Erstellung von Seiten-Rückruffunktionen sowie die Verarbeitung der Formulardaten.

Zunächst verwenden Sieadmin_menuZum Hook wird eine Untermenü-Seite hinzugefügt:

// 添加插件设置菜单到后台
function mfp_add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件设置',       // 菜单标题
        'manage_options',    // 权限要求
        'my-first-plugin',   // 菜单slug
        'mfp_options_page_html' // 显示页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mfp_add_admin_menu' );

Als Nächstes definieren Sie die Callback-Funktion.mfp_options_page_htmlHier ist die HTML-Formulare für die Darstellung der Einstellungsseite. Gleichzeitig müssen wir die WordPress-Einstellungs-API verwenden, um Optionen sicher zu registrieren, zu speichern und abzurufen. Zur Kürze folgt eine vereinfachte Version der Implementierung:

Empfohlene Lektüre Eine vollständige Anleitung zur Entwicklung von WordPress-Plugins: vom Einstieg bis zum Erstellen professioneller Erweiterungen.

// 设置页面的HTML内容
function mfp_options_page_html() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <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( 'my-first-plugin' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="de"/></form>
    </div>
    <?php
}

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个设置
    register_setting( 'mfp_options_group', 'mfp_footer_text' );

// 添加一个设置区域
    add_settings_section(
        'mfp_section',
        '自定义文本设置',
        null,
        'my-first-plugin'
    );

// 向区域中添加字段
    add_settings_field(
        'mfp_field_footer',
        '文章页脚文本',
        'mfp_field_footer_html',
        'my-first-plugin',
        'mfp_section'
    );
}
add_action( 'admin_init', 'mfp_settings_init' );

// 渲染文本输入字段
function mfp_field_footer_html() {
    $option = get_option( 'mfp_footer_text', '感谢阅读!本文由“我的第一个插件”为您呈现。' );
    ?>
    <input type='text' name='mfp_footer_text' value='<?php echo esc_attr( $option ); ?>' class='regular-text'>
    <p class="description">Der hier eingegebene Inhalt wird am Ende jedes Artikels angezeigt.</p>
    &lt;?php
}

Zum Schluss: Die vorherigen Änderungen werden jetzt aktualisiert bzw. umgesetzt.mfp_append_to_contentFunktion, um diese aus den Datenbankoptionen abzurufen.mfp_footer_textDer Text wird aus einer Datei gelesen, anstatt von fest eingebettetem („härtecodiertem“) Text zu verwenden.

Plugin-Sicherheit, Optimierung und Vorbereitung auf die Veröffentlichung

In der letzten Phase der Entwicklung müssen Sicherheit, Codequalität sowie der Deployment-Prozess berücksichtigt werden, um sicherzustellen, dass das Plugin stabil und nutzbar ist.

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.

Befolgen Sie die besten Sicherheitspraktiken.

Alle von den Benutzern eingegebenen Daten müssen vor der Ausgabe in den Browser oder der Speicherung in der Datenbank entgegengegenwärtigt („escaped“) oder überprüft werden. Bei der Ausgabe wird dies entsprechend umgesetzt.esc_html()esc_attr()esc_url()Funktionen wie diese werden verwendet, wenn Formulare abgesendet oder AJAX-Anfragen gestartet werden.wp_verify_nonce()undcheck_admin_referer()Um die Legitimität einer Anfrage zu überprüfen und Angriffe durch Cross-Site Request Forgery (CSRF) zu verhindern, sollte man niemals blind Vertrauen in die übertragenen Daten setzen.$_GET$_POSToder$_REQUESTDie Daten in „…“.

Internationalisierungsfunktionen implementieren

Damit das Plugin von Nutzern auf der ganzen Welt verwendet werden kann, müssen alle für die Benutzer bestimmten Zeichenketten im Code internationalisiert werden. Wir haben dies bereits in den vorherigen Beispielen umgesetzt._e()Die Funktion dient dazu, den übersetzten Text auszugeben. Darüber hinaus müssen Sie die Funktion in den Kommentaren des Plugins deklarieren.Text DomainundDomain Path
Während der Initialisierung des Plugins (z. B. durch…)plugins_loadedHook (Befehl), verwendenload_plugin_textdomain()Funktion zum Laden von Sprachdateien:

function mfp_load_textdomain() {
    load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfp_load_textdomain' );

Danach kannst du Tools wie Poedit verwenden, um Zeichenketten aus dem Quellcode der Plugins zu extrahieren.__()_e()Die von Funktionen umgebene Zeichenkette wird generiert..potVorlagen-Dateien, die Übersetzer zum Erstellen verwenden können..pound.moDokumente.

Codeorganisation und Leistungsbewertung

Mit dem Wachstum der Funktionen der Plugins sollte nicht der gesamte Code in die Hauptdatei gepackt werden. Es ist sinnvoller, den Code nach funktionalen Modulen in verschiedene Dateien aufzuteilen..phpDie Dateien befinden sich in der Hauptdatei, und diese enthält sie selektiv. Zum Beispiel kann man…includes/admin/Das Verzeichnis enthält den Code, der mit der Backend-Verarbeitung zusammenhängt.includes/public/Hier werden die mit der Frontend-Entwicklung verbundenen Codes gespeichert.includes/class-*.phpSpeichert die Definitionen der Klassen.
Für ressourcenintensive Vorgänge sollten Sie die Transients-API von WordPress in Betracht ziehen, um die Ergebnisse zeitaufwendiger Abfragen zu speichern, oder die Cron-API nutzen, um nicht sofort ausgeführte Aufgaben im Hintergrund zu verarbeiten. Stellen Sie sicher, dass die Plugins bei Deaktivierung über registrierte Deinstallations-Hooks ordnungsgemäß entfernt werden.register_uninstall_hook()Löschen Sie die von Ihnen erstellten Daten und Optionen, um die Sauberkeit der Website zu gewährleisten.

Zusammenfassungen

Mithilfe dieses Tutorials haben wir den gesamten Prozess der Erstellung eines funktionsfähigen WordPress-Plugins von Grund auf durchgeführt. Wir begannen mit dem Verständnis der grundlegenden Struktur eines Plugins sowie der Einrichtung der Entwicklungsumgebung und erstellten eine Hauptdatei, die Standard-Commentarzeilen enthält. Anschließend haben wir das Plugin durch das Anhängen an bestimmte Stellen im WordPress-System implementiert.admin_noticesundthe_contentDiese beiden Kern-Hooks ermöglichen die Ausführung von Benachrichtigungen im Hintergrund sowie die Anzeige von Texten im Fußbereich der Artikelseiten. Um die Nutzbarkeit des Plugins zu verbessern, haben wir außerdem die WordPress-Settings-API eingeführt und eine Verwaltungsseite erstellt, die es den Nutzern ermöglicht, den Text selbst anzupassen. Abschließend haben wir wichtige Aspekte der Plugin-Entwicklung besprochen, wie Sicherheitspraktiken, die Unterstützung von Internationalisierung sowie die Optimierung der Codestruktur. Dieser Prozess veranschaulicht deutlich das Kernparadigma der WordPress-Plugin-Entwicklung: Die Nutzung umfangreicher Aktionen und Filter zur Implementierung von Funktionen, die Einhaltung von API-Spezifikationen bei der Erstellung der Benutzeroberfläche sowie die stets vorrangige Berücksichtigung von Sicherheit und Wartbarkeit. Mit diesen Grundkenntnissen verfügen Sie bereits über die nötigen Fähigkeiten, um die Welt der komplexeren Plugins zu erkunden.

FAQ Häufig gestellte Fragen

Welche Vorkenntnisse sind für die Entwicklung von WordPress-Plugins erforderlich?

Sie benötigen eine solide Grundlage in der PHP-Programmierung, da der Code der Plugins hauptsächlich in PHP geschrieben ist. Außerdem sollten Sie über grundlegende Kenntnisse von HTML, CSS und JavaScript verfügen, um die Frontend-Präsentation und -Interaktionen zu bewältigen. Es ist von entscheidender Bedeutung, sich mit den grundlegenden Konzepten von WordPress vertraut zu machen – insbesondere mit Themen, Artikeltypen, Kategorien sowie dem Hook-System (einschließlich Aktionen und Filtern).

###
Welche Dateien muss ein grundlegendes WordPress-Plugin unbedingt enthalten?

Im einfachsten Fall kann ein Plugin nur aus einer einzigen PHP-Datei bestehen. Diese Datei muss jedoch an der Spitze die Standard-Plugin-Informationen (Plugin Headers) enthalten, wie sie von WordPress vorgeschrieben werden – genau wie in unserem Beispiel.Plugin NameDescriptionFelder wie diese sind die einzigen Kriterien, anhand derer WordPress ein Plugin erkennt und es in der Liste der verfügbaren Plugins anzeigt.

###
Wie sollte ich meine Plugin-Funktionen und Variablen benennen?

Um Konflikte mit dem Code des WordPress-Kerns, von Themes oder anderen Plugins zu vermeiden, sollten alle benutzerdefinierten Funktionen, Klassen, Variablen und Konstanten einen eindeutigen Präfix verwenden. Es wird in der Regel empfohlen, Präfixe zu verwenden, die mit den Abkürzungen oder Kurzbezeichnungen der Plugins in Verbindung stehen – wie in unserem Beispiel.mfp_(Im Namen von „My First Plugin“): Auch die Klassennamen sollten dieser Regel folgen und möglichst aussagekräftige, vollständige Bezeichnungen verwenden.

###
Werden die in einem Plugin erstellten Datenbanktabellen oder Optionen nach dem Deaktivieren bzw. Entfernen des Plugins gelöscht?

Standardmäßig wird das nicht geschehen. Wenn Sie jedoch…add_option()update_option()Die erstellten Optionen sowie die selbst definierten Datenbanktabellen bleiben im Datenbanksystem erhalten, wenn der Benutzer die Plugin-Dateien über die WordPress-Backend-Verwaltung löscht. Um eine saubere Deinstallationserfahrung zu gewährleisten, sollten Sie…register_uninstall_hook()Es gibt eine Funktion zur Registrierung eines Reinigungs-Callback-Funktionals, in dem alle mit Plugins verbundenen Optionen, Datenbanktabellen sowie temporäre Caches entfernt werden.

###
Wie kann ich sicherstellen, dass mein Plugin mit mehreren WordPress-Versionen kompatibel ist?

Vermeiden Sie in Ihrem Code die Verwendung zu neuer PHP-Versionen oder Funktionen, die spezifisch für WordPress sind. Vor dem Einsatz einer Funktion, Klasse oder eines Hooks sollten Sie sich zunächst die offiziellen Dokumentationen ansehen, um zu erfahren, in welcher WordPress-Version diese Funktionen eingeführt wurden. Dies können Sie in den Kommentaren am Anfang der Hauptdatei Ihres Plugins tun.Requires at least:Die Felddeklaration gibt an, welche minimale WordPress-Version unterstützt wird. Im Code kann dies in Kombination mit Bedingungssätzen verwendet werden, um entsprechende Aktionen auszuführen, je nachdem, welche WordPress-Version installiert ist.function_exists()oderclass_exists()Überprüfen Sie, um ein Downgrade-Plan oder eine freundliche Hinweismeldung bereitzustellen.