WordPress-Plugins entwickeln: Benutzerdefinierte Funktionsmodule von Grund auf erstellen

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

Das grundlegende Strukturverständnis von WordPress-Plugins

Bevor man sich tief in den Code einarbeitet, ist es von entscheidender Bedeutung, die grundlegenden Bestandteile eines WordPress-Plugins zu verstehen. Ein Plugin ist im Grunde genommen ein oder mehrere Elemente, die in das WordPress-System eingefügt werden, um zusätzliche Funktionen oder Anpassungen zu ermöglichen.wp-content/plugins/Die PHP-Dateien im Verzeichnis bestehen aus einem Hauptdatei, die die Metadaten des Plugins enthält. Diese Metadaten werden WordPress mit Hilfe eines Kommentarblocks in einer speziellen Formatierung mitgeteilt, um die Existenz des Plugins anzuzeigen.

Die zentrale Eingangskonfigurationsdatei des Plugins – zum Beispiel nennen wir sie „plugin_config.json“.my-first-plugin.phpEin WordPress-Plugin muss einen bestimmten Dateihaupteintrag („Header“) enthalten. Dieser Eintrag definiert den Namen des Plugins, eine Beschreibung, die Version, den Autor usw. und dient als einzige Grundlage für die Erkennung und Ladung des Plugins durch WordPress. Ein sehr einfaches Plugin kann aus dieser Datei allein bestehen und die Funktionen der Website mithilfe der von WordPress bereitgestellten APIs – wie Action-Hooks und Filter-Hooks – ändern oder erweitern.

Die Funktionen von Plugins können sehr einfach sein – beispielsweise die Hinzufügung eines Textabsatzes am unteren Rand einer Seite – oder äußerst komplex, wie bei der Erstellung eines vollständigen E-Commerce-Systems. Unabhängig von der Komplexität folgt die Entwicklung immer dem gleichen Grundmuster: Zunächst wird die richtige Dateistruktur an der entsprechenden Stelle erstellt; anschließend wird der Code geschrieben und in den Lebenszyklus von WordPress integriert; schließlich werden über die WordPress-Backend-Verwaltungsoberfläche die notwendigen Konfigurationen vorgenommen und Interaktionen durchgeführt.

Empfohlene Lektüre Einführung in die Entwicklung von WordPress-Plugins: Erstellen Sie Ihr erstes Plugin von Grund auf

Erstellen Sie Ihr erstes Plugin.

Lassen Sie uns mit einem klassischen “Hello World”-Beispiel die Erstellung eines einfachsten Plugins praktizieren. Die Funktion dieses Plugins besteht darin, eine Begrüßung an der oberen Seite des Artikelinhalts auf jeder Seite der Website anzuzeigen.

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.

Zunächst müssen Sie dies lokal oder auf dem Server erledigen.wp-content/plugins/Erstellen Sie in dem Verzeichnis ein neues Verzeichnis und nennen Sie es „…“ (füllen Sie den Namen mit dem gewünschten Namen aus).my-hello-pluginDann erstellen Sie innerhalb dieses Ordners eine Haupt-PHP-Datei, die wir „main.php“ nennen.my-hello-plugin.php

Das Hauptdokument zum Erstellen eines Plugins

Öffnenmy-hello-plugin.phpFühren Sie die Datei aus und geben Sie den folgenden Code ein. Dieser Code entspricht dem Standardformat für WordPress-Plugins und enthält sowohl die Plugin-Informationen als auch den Code zur Umsetzung der Funktionen.

<?php
/**
 * Plugin Name:       我的问候插件
 * Plugin URI:        https://yourwebsite.com/my-hello-plugin
 * Description:       这是一个简单的插件,用于在文章内容前输出“您好,读者!”。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-hello-plugin
 */

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * 在主文章内容前添加问候语。
 *
 * @param string $content 原始的文章内容。
 * @return string 添加了问候语后的新内容。
 */
function my_hello_add_greeting( $content ) {
    $greeting = &#039;<p style="background-color:#f0f8ff; padding:10px; border-left:4px solid #0073aa;"><strong>Hallo, Leser! Willkommen bei der Lektüre dieses Artikels.</strong></p>';
    // 只在主循环且是文章页面时添加
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'my_hello_add_greeting' );

Aktivieren und testen Sie das Plugin.

Laden Sie den Ordner, der die Datei enthält, auf den Server hoch.wp-content/plugins/Verwenden Sie das Verzeichnis, oder falls Sie lokal entwickeln, platzieren Sie die Datei direkt an der entsprechenden Stelle. Anschließend loggen Sie sich in das WordPress-Backend ein und navigieren Sie zum Menü “Plugins”. Dort sollten Sie die Option “Mein Gruß-Plugin” in der Liste der Plugins sehen. Klicken Sie auf die Schaltfläche “Aktivieren”.

Nach der Aktivierung wird beim Besuch jeder Artikel- oder Seite-Übersicht auf der Website vor dem Beginn des eigentlichen Inhalts des Artikels eine Begrüßung mit hellem Blau-Hintergrund und linkem Rahmen angezeigt. Dieser Vorgang veranschaulicht auf klare Weise den Kernprozess der Plugin-Entwicklung: Die Erstellung von Dateien, die Hinzufügung von Funktionen mithilfe von „Hooks“ sowie die Aktivierung im Hintergrund. Sie haben damit den ersten Schritt in der Entwicklung von WordPress-Plugins erfolgreich gemeistert.

Empfohlene Lektüre WordPress-Plugins entwickeln: Von Null auf Eins – wie man leistungsstarke Website-Erweiterungen erstellt

Funktionen erweitern durch die Verwendung von Hooken und Filtern

Die Flexibilität und Erweiterbarkeit von WordPress verdanken sich in hohem Maße seinem “Hook”-System. Hooks werden in zwei Kategorien unterteilt: Aktionshooks (Actions) und Filterhooks (Filters). Ihr Verständnis sowie die geschickte Anwendung sind entscheidend für die Entwicklung fortgeschrittener Plugins.

Action Hooks ermöglichen es Ihnen, zu bestimmten Zeitpunkten, während WordPress ausgeführt wird (z. B. beim Veröffentlichen eines Artikels oder beim Laden einer Seite), Ihren eigenen Code einzufügen und auszuführen.save_postDie Aktion wird ausgelöst, wenn der Artikel oder die Seite in der Datenbank gespeichert wird. Sie können dies durch…add_action()Die Funktion “montiert” Ihre benutzerdefinierte Funktion an diesen Hook.

Die Filter-Hooks ermöglichen es Ihnen, die während des Verarbeitungsprozesses von WordPress erzeugten Daten zu ändern. Sie registrieren eine Funktion als Filter, und wenn WordPress auf diesen Filter stößt, werden die Daten an alle registrierten Funktionen übergeben. Die zurückgegebenen Werte der verarbeiteten Daten werden ebenfalls weitergeleitet. Im obigen Beispiel wurde dies genutzt…the_contentEs handelt sich dabei um einen typischen Filter-Hook, der es Ihnen ermöglicht, den Inhalt des zu exportierenden Artikels zu ändern.

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 Sie eine einfache Verwaltungsoption.

Ein wirklich nützliches Plugin benötigt in der Regel einige von den Nutzern konfigurierbare Optionen. Dies erfordert die Interaktion mit dem WordPress-Backend. Wir zeigen anhand eines einfachen Beispiels, wie man eine benutzerdefinierte Einstellungsseite hinzufügt.

Zunächst verwenden wir…add_action(‘admin_menu’, …)Registrieren Sie eine Funktion, die in der Administration eine neue Menüeintragung erstellt.

/**
 * 在WordPress后台添加一个自定义菜单页面。
 */
function my_hello_add_admin_menu() {
    add_menu_page(
        ‘问候插件设置’, // 页面标题
        ‘问候插件’,     // 菜单标题
        ‘manage_options’, // 所需权限
        ‘my-hello-plugin’, // 菜单slug
        ‘my_hello_admin_page_html’, // 用于显示页面内容的回调函数
        ‘dashicons-format-chat’, // 图标(可选)
        80 // 菜单位置(可选)
    );
}
add_action( ‘admin_menu‘, ’my_hello_add_admin_menu’ );

/**
 * 自定义设置页面的HTML输出。
 */
function my_hello_admin_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
            // 输出设置字段、安全性和保存更改按钮
            settings_fields( ‘my_hello_options’ );
            do_settings_sections( ‘my-hello-plugin’ );
            submit_button( ‘保存问候语设置’ );
            ?>
        <input type="hidden" name="trp-form-language" value="de"/></form>
    </div>
    &lt;?php
}

Registrierungs- und Ausgabefeld-Einstellungen

Einfach nur Seiten zu haben reicht nicht aus – wir müssen auch optionale Einstellungen erstellen, die gespeichert werden können. Dafür ist die Verwendung bestimmter Technologien oder Methoden erforderlich.add_action(‘admin_init’, …)sowieregister_setting()add_settings_section()undadd_settings_field()sowie eine Reihe weiterer Funktionen.

Empfohlene Lektüre Vom Einstieg zum Meistern: Ein umfassender Leitfaden für die Entwicklung von WordPress-Plugins

/**
 * 初始化插件的设置。
 */
function my_hello_settings_init() {
    // 注册一个设置项到数据库的‘my_hello_options’键下
    register_setting( ‘my_hello_options‘, ’my_hello_greeting_text’ );

// 在页面中添加一个设置区域
    add_settings_section(
        ‘my_hello_section’, // 区域ID
        ‘问候语设置’,        // 区域标题
        ‘my_hello_section_html’, // 区域描述的回调函数
        ‘my-hello-plugin’ // 所属页面slug
    );

// 在区域内添加一个具体的设置字段
    add_settings_field(
        ‘my_hello_field’, // 字段ID
        ‘自定义问候语’,    // 字段标签
        ‘my_hello_field_html’, // 用于渲染字段HTML的回调函数
        ‘my-hello-plugin’, // 所属页面slug
        ‘my_hello_section’ // 所属区域ID
    );
}
add_action( ‘admin_init‘, ’my_hello_settings_init’ );

/**
 * 设置区域的描述信息。
 */
function my_hello_section_html() {
    echo ‘<p>Hier können Sie den Grußtext festlegen, der am Anfang des Artikels angezeigt wird.</p>’;
}

/**
 * 渲染设置字段的HTML。
 */
function my_hello_field_html() {
    // 从数据库获取已保存的值,如果没有则使用默认值
    $greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    ?&gt;
    <input type="‘text’"
           id="‘my_hello_greeting_text’"
           name="‘my_hello_greeting_text’"
           value="“NO NUMERIC NOISE KEY" 1000”
 class="“regular-text”" />
    <p class="“description”">Geben Sie bitte den Gruß ein, den Sie vor dem Artikelinhalt anzeigen möchten.</p>
    &lt;?php
}

Jetzt haben wir eine Backend-Einstellungsseite mit einem Eingabefeld. Als Nächstes müssen wir die ursprünglichen Funktionsmethoden anpassen.my_hello_add_greetingLassen Sie es die Begrüßungen aus den Optionen der Datenbank lesen.

function my_hello_add_greeting( $content ) {
    // 获取保存的自定义问候语,如果不存在则使用默认值
    $custom_greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    $greeting = ‘<p style="“background-color:#f0f8ff;" padding:10px; border-left:4px solid #0073aa;”><strong>’ . esc_html( $custom_greeting ) . ‘</strong></p>’;
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}

Damit ist ein Plugin mit grundlegenden Backend-Konfigurationsfunktionen fertiggestellt. Benutzer können den Grußtext im Backend unter dem Menü “Gruß-Plugin” frei ändern, und die Artikel auf der Benutzeroberfläche wenden die neuesten Einstellungen automatisch an.

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.

Best Practices und Sicherheit bei der Entwicklung von Plugins

Entwickeln Sie ein WordPress-Plugin für die Nutzung durch andere – dieses sollte nicht nur über umfassende Funktionen verfügen, sondern auch die besten Praktiken hinsichtlich Sicherheit, Leistung und Wartbarkeit einhalten.

Sicherheitsaspekte

Sicherheit ist das oberste Prinzip. Vertrauen Sie niemals den von Benutzern eingegebenen Daten. Alle Daten, die von Benutzern erhalten werden (z. B.…)$_GET$_POST$_COOKIEVor der Verwendung in Datenbankabfragen, der Ausgabe auf Webseiten oder bei Dateioperationen muss alles entsprechend gereinigt, überprüft und entgegengegenwirkt werden („escaped“).

Für die Daten, die auf eine HTML-Seite ausgegeben werden, sollte…esc_html()esc_attr()oderwp_kses_post()Funktionen wie „escape“ müssen verwendet werden, um Zeichen zu kodieren bzw. zu entschlüsseln. Für Variablen, die in Datenbankabfragen verwendet werden, ist es unerlässlich, diese vor der Verwendung entsprechend zu formatieren.$wpdb->prepare()Parametrisieren Sie Ihre Abfragen mithilfe geeigneter Methoden und vermeiden Sie es unter keinen Umständen, Variablen direkt in SQL-Anweisungen einzufügen. In Plugins sollte dies stets der Fall sein.defined(‘ABSPATH’) or die;Damit verhindert man, dass auf die Dateien direkt zugegriffen werden kann.

Codeorganisation und Internationalisierung

Mit dem Wachstum der Funktionen der Plugins wird es schwierig, den gesamten Code in einer einzigen Hauptdatei zu halten. Es ist sinnvoller, den Code nach Funktionen in verschiedene Dateien aufzuteilen. In der Regel ist die Hauptdatei dafür verantwortlich, Hook-Funktionen und den Kernprozess zu definieren, während Einstellungsseiten, Funktionen, Klassendefinitionen usw. in anderen Dateien abgelegt werden.includes/oderadmin/public/In solchen Unterverzeichnissen wird dies durchgeführt…require_onceEinführung.

Damit Ihr Plugin von Nutzern auf der ganzen Welt genutzt werden kann, sollte es internationalisiert (i18n) sein. Das bedeutet, dass alle im Plugin ausgegebenen Textzeichen mit den Übersetzungsfunktionen von WordPress versehen werden müssen.__()_e()Verpacken Sie die Artikel und bereiten Sie alles vor.Text DomainEinen eindeutigen Identifikator festlegen (z. B. den Namen des Plugins-Verzeichnisses). Im Kommentarblock am Anfang der Datei haben wir dies bereits definiert.Text Domain: my-hello-pluginSo sollte es im Code verwendet werden:

$-Begrüßung = ‘<p><strong>’ . esc_html__( ‘您好,读者!欢迎阅读本文。’ , ’my-hello-plugin’ ) . ‘</strong></p>’;

Auf diese Weise können die Übersetzer die entsprechenden Tools und Ressourcen nutzen..pound.moDie Dateien enthalten die Übersetzungen für verschiedene Sprachen für Ihr Plugin.

Leistungsoptimierung

Plugins sollten den Einfluss auf die Leistung der Website so gering wie möglich halten. Vermeiden Sie es, bei jedem Seitenladen zahlreiche Datenbankabfragen oder komplexe Berechnungen durchzuführen – insbesondere auf der Frontend-Seite. Nutzen Sie die WordPress-Transients-API sinnvoll, um Ergebnisse von Abfragen, die nicht häufig ändern, zu speichern. Wenn Sie beispielsweise die Ergebnisse einer API-Anfrage speichern möchten, können Sie dies wie folgt tun:

$data = get_transient( ‘my_plugin_api_data’ );
if ( false === $data ) {
    // 数据不存在或已过期,从API获取
    $data = wp_remote_retrieve_body( wp_remote_get( ‘https://api.example.com/data’ ) );
    // 将数据存储12小时
    set_transient( ‘my_plugin_api_data’, $data, 12 * HOUR_IN_SECONDS );
}
// 使用 $data

Außerdem stellen Sie sicher, dass Ihre CSS- und JavaScript-Dateien nur auf den Seiten geladen werden, auf denen sie tatsächlich benötigt werden. Verwenden Sie dazu geeignete Techniken, um das Laden dieser Dateien zu steuern.wp_enqueue_script()undwp_enqueue_style()Funktionen, ergänzt durch geeignete „Hooks“ (z. B.…)wp_enqueue_scriptsUm Frontend-Ressourcen zu laden, wird … verwendet; für Backend-Ressourcen wird hingegen … eingesetzt.admin_enqueue_scriptsHaken.

Zusammenfassungen

Durch die schrittweise Anleitung in diesem Artikel haben wir die gesamte Entwicklungsreise von einem einfachen “Hello World”-Plugin zu einem praktischen Plugin vollzogen, das über Backend-Konfigurationsoptionen verfügt und die grundlegenden Prinzipien der Sicherheit sowie der Codeorganisation einhält. Der Schlüssel dazu liegt darin, die Kernmechanismen von WordPress zu verstehen und anzuwenden – insbesondere das Hook-System. Es ermöglicht es uns, die Funktionalitäten der Plattform auf modulare und nicht-invasive Weise zu erweitern. Egal ob es darum geht, Inhalte zu bearbeiten (Filter) oder bestimmte Aufgaben auszuführen (Aktionen): Hooks dienen als Brücke zwischen unserem Code und der Welt von WordPress.

Denken Sie daran: Die Entwicklung hochwertiger Plugins bedeutet nicht nur, dass die Funktionen ordnungsgemäß funktionieren. Es geht auch um die sorgfältige Sicherheitshandhabung der von den Nutzern eingegebenen Daten, die klare Strukturierung des Codes, die Unterstützung für die Internationalisierung sowie eine gründliche Betrachtung der Website-Leistung. Jeder Schritt – von der definierten Struktur der Plugin-Dateien über die Verwendung standardisierter APIs zur Erstellung von Menüs und Einstellungen bis hin zur sicheren Ausgabe der Daten – beeinflusst die Qualität, Sicherheit und den Benutzererlebnis des Plugins. Indem Sie weiterhin die zahlreichen APIs und Funktionen von WordPress erkunden, werden Sie in der Lage sein, leistungsstarke und zuverlässige Plugins zu entwickeln.

FAQ Häufig gestellte Fragen

Was sind die Grundvoraussetzungen für die Entwicklung von Plugins?

Sie sollten über grundlegende Kenntnisse der PHP-Programmiersprache verfügen, einschließlich Variablen, Funktionen, Arrays, bedingter Ausführung sowie Schleifen – also der Kernkonzepte der Programmierung. Ebenfalls hilfreich ist ein grundlegendes Verständnis von HTML und CSS, da Plugins oft dazu dienen, die Benutzeroberfläche der Website zu generieren oder zu ändern. Ein Verständnis der grundlegenden Funktionen und des Backends von WordPress erleichtert den Entwicklungsprozess erheblich.

Wie debugge ich mein WordPress-Plugin?

Zuerst stellen Sie sicher, dass Ihre…wp-config.phpIn der Datei wurde der Debug-Modus für WordPress aktiviert. Dies erfolgte durch die entsprechenden Einstellungen.define('WP_DEBUG', true);unddefine('WP_DEBUG_LOG', true);Die Fehlermeldung wird aufgezeichnet.wp-content/debug.logIn den Dateien ist dies sicherer, als die Informationen direkt auf der Seite anzuzeigen. Darüber hinaus kann dies auch in Kombination mit anderen Methoden eingesetzt werden.error_log()Funktionen können Werte von Variablen ausgeben; außerdem können Sie die “Netzwerk”- und “Konsolle”-Bereiche der Browser-Entwicklungstools nutzen, um Probleme mit Frontend-Scripten und -Stilen zu überprüfen.

Kann das von mir entwickelte Plugin in das offizielle Plugin-Verzeichnis hochgeladen werden?

Das ist möglich, aber Sie müssen die offiziellen Anforderungen von WordPress für die Einreichung von Plugins erfüllen. Dazu gehört, sicherzustellen, dass Ihr Plugin einer GPL-kompatiblen Lizenz unterliegt, die WordPress-Programmierstandards einhält, der Code sicher ist und keine schädlichen Inhalte enthält, sowie eine klare Dokumentation bereitzustellen. Vor der Einreichung wird empfohlen, das von WordPress bereitgestellte Handbuch für Plugin-Entwickler und die Einreichungsanleitung sorgfältig zu lesen. Der Einreichungsprozess erfordert eine Überprüfung durch das Plugin-Einreichungssystem auf WordPress.org.

Welche Unterschiede gibt es zwischen den Funktionen von Plugins und Themes? Wann sollte man ein Plugin entwickeln?

Das Thema (Theme) steuert hauptsächlich das Erscheinungsbild und die Layoutstruktur einer Website und beinhaltet in der Regel Template-Dateien, Stylesheets sowie einige Funktionen, die mit der Darstellung der Inhalte zusammenhängen. Plugins hingegen dienen dazu, Funktionen der Website hinzuzufügen oder zu ändern – ihre Auswirkungen hängen in den meisten Fällen nicht vom aktuell verwendeten Thema ab. Ein gutes Prinzip ist folgendes: Wenn eine Funktion direkt mit dem Erscheinungsbild der Website zusammenhängt (z. B. die Seitenlayout oder die Farbgestaltung), sollte sie in das Thema integriert werden. Wenn es sich jedoch um eine allgemeine, unabhängige Funktion handelt (z. B. ein Kontaktformular, SEO-Optimierungen oder Caching-Mechanismen), die unabhängig vom verwendeten Thema funktionieren soll, sollte diese als Plugin entwickelt werden. Dies trägt dazu bei, die Trennung von Funktionen und Design zu gewährleisten und die Flexibilität der Website zu erhöhen.