WordPress

WordPress Plugin erstellen: So programmieren Sie ein eigenes Plugin

Letzte Aktualisierung
3. März 2026

Ein eigenes WordPress-Plugin von Grund auf zu entwickeln, klingt für viele zunächst nach einem komplexen Vorhaben. So schwer ist es aber gar nicht: Etwas Basiswissen in PHP reicht schon aus, um erste Funktionen zu erstellen. Möchten Sie es ausprobieren?

In diesem Ratgeber zeigen wir Ihnen Schritt für Schritt, wie Sie ein einfaches WordPress-Plugin erstellen – inklusive Beispielcode und praktischer Tipps, wie Sie das Plugin später sinnvoll ausbauen.

Top WordPress Hosting 2026
Gesponsert
ab  3,68 €
pro Monat
Hostinger
ab  8,91 €
pro Monat
SiteGround
ab  25,14 €
pro Monat
Kinsta
ab  4,50 €
pro Monat
IONOS
Das Wichtigste in Kürze
  • Mit eigenen Plugins ergänzen Sie WordPress um maßgeschneiderte Funktionen. Sie bleiben unabhängig von Drittanbietern und behalten die volle Kontrolle über Erweiterungen und Anpassungen.

  • Die Einstiegshürde ist weniger hoch, als viele denken: Grundlegende PHP-Kenntnisse reichen für einfache Funktionen aus.

  • Für den Start genügt bereits eine einzelne PHP-Datei. Darauf aufbauend können Sie Ihr Plugin Schritt für Schritt erweitern.

  • Mit sauberem Code, einer klaren Struktur und ein paar grundlegenden Sicherheitsmaßnahmen vermeiden Sie Konflikte und Wartungsprobleme.

Warum ist ein eigenes WordPress-Plugin sinnvoll?

Ein eigenes Plugin zu entwickeln, ist immer dann sinnvoll, wenn Sie WordPress gezielt erweitern möchten. Natürlich gibt es unzählige fertige Erweiterungen, doch bestehende Erweiterungen sind teils überladen oder einfach nicht flexibel genug für spezifische Anforderungen – ganz zu schweigen von möglichen Kosten.

Mit einem selbst entwickelten Plugin behalten Sie die Kontrolle, vermeiden unnötige Abhängigkeiten und können Ihre Funktionen exakt an Ihren Bedarf anpassen.

Diese Freiheit und Unabhängigkeit bringt einige Vorteile mit sich – aber auch manche Einschränkungen, die Sie vorher kennen sollten:

  • Gezielte Funktionalität ohne Ballast
    Ein eigenes Plugin enthält nur das, was Sie benötigen. Sie vermeiden unnötigen Overhead durch fremde Funktionen, die Ihre Website verlangsamen oder potenzielle Sicherheitslücken mitbringen.

  • Unabhängigkeit vom Theme
    Plugin-Code bleibt auch bei einem Theme-Wechsel erhalten. Während Funktionen in der functions.php mit dem Theme verschwinden, bleibt Ihr eigenes Plugin dauerhaft nutzbar.

  • Bleibt bei Updates bestehen
    Auch WordPress-Updates überschreiben keine Plugins, solange Sie nicht im Core eingreifen. Ihre Funktionen bleiben bei Systemaktualisierungen bestehen.

  • Einfach wiederverwendbar
    Sie können Ihr Plugin problemlos auf anderen WordPress-Seiten einsetzen. Der Code bleibt portabel, versionierbar und lässt sich so in verschiedenen Projekten nutzen.

  • Besseres Verständnis der WordPress-Architektur
    Beim Entwickeln eines eigenen Plugins lernen Sie die internen Strukturen und Abläufe von WordPress besser kennen. Sie setzen sich mit Hooks, Filtern und API-Funktionen auseinander.

  • Selbst für Wartung und Sicherheit verantwortlich
    Sie sind selbst dafür verantwortlich, Sicherheitslücken zu vermeiden, die Kompatibilität mit neuen WordPress-Versionen sicherzustellen und gegebenenfalls Korrekturen vorzunehmen.

  • Mehr Aufwand als ein Snippet
    Ein Plugin erfordert mehr Struktur als ein einfaches Code-Snippet in der functions.php eines Themes. Der initiale Aufwand ist höher.

So erstellen Sie ein WordPress-Plugin

Ein erstes, einfach gehaltenes WordPress-Plugin ist schnell erstellt. Wir zeigen Ihnen Schritt für Schritt, wie Sie eine passende Entwicklungsumgebung einrichten, Ihren Plugin-Ordner korrekt anlegen, eine erste Funktion umsetzen und Ihre Erweiterung im WordPress-Backend testen:

1.

Entwicklungsumgebung vorbereiten

Bevor Sie mit dem eigentlichen Coden beginnen, sollten Sie Ihre Arbeitsumgebung vorbereiten. Empfehlenswert ist eine lokale Umgebung auf Ihrem Rechner. So können Sie Funktionen testen, ohne eine Live-Website zu gefährden.

Eine solche Umgebung besteht mindestens aus einer lokalen WordPress-Installation und einem geeigneten Code-Editor.

Lokale WordPress-Installation erstellen

Folgende kostenfreie Tools eignen sich besonders gut, um WordPress lokal zu betreiben:

  • Local by Flywheel ist einsteigerfreundlich und optimiert für WordPress.

  • MAMP oder XAMPP sind klassische PHP/MySQL-Stacks für lokale Entwicklungsumgebungen.

Nach der Installation eines dieser Tools richten Sie darüber eine frische WordPress-Instanz ein. Innerhalb dieser Testumgebung finden Sie alle relevanten Verzeichnisse, insbesondere den wichtigen Ordner wp-content/plugins, in dem Sie Ihre Plugins später speichern.

Mehr zur Installation von WordPress lesen Sie hier:

Code-Editor einrichten

Ein moderner Code-Editor erleichtert die Arbeit erheblich. Wir empfehlen die folgenden Optionen:

  • Visual Studio Code ist ein kostenloser, leistungsstarker Editor mit nützlichen Erweiterungen wie PHP Intelephense, WordPress Snippets und WordPress Toolbox.

  • Sublime Text ist ein schlanker, schneller Editor mit guter PHP-Unterstützung und nützlichen Paketen für Syntaxhervorhebung und Code-Struktur.

Beide Editoren eignen sich hervorragend für den Einstieg in die Plugin-Entwicklung. Wichtig ist, dass Sie sich in Ihrem bevorzugten Programm schnell zurechtfinden und effizient arbeiten können.

Debugging aktivieren

Nachdem Sie den Editor installiert haben, öffnen Sie die Datei wp-config.php Ihrer WordPress-Testumgebung und setzen dort:

define('WP_DEBUG', true); // Aktiviert das Debugging generell define('WP_DEBUG_LOG', true); // Protokolliert Fehler in wp-content/debug.log define('WP_DEBUG_DISPLAY', true); // Zeigt Fehler im Frontend an

Damit leitet WordPress alle PHP-Fehler, Warnungen und Hinweise an eine Log-Datei weiter. Sie erkennen damit Syntax- und Laufzeitfehler schneller und können darauf reagieren.

Diese Debug‑Einstellungen sind nur für Ihre lokale Entwicklungsumgebung gedacht und nicht für den Live‑Betrieb. Deaktivieren Sie das Debugging bei Live‑Websites und analysieren Sie Fehler ausschließlich über Log‑Mechanismen auf Server‑Ebene oder über Monitoring-Tools.

2.

Plugin-Ordner und Hauptdatei anlegen

Sobald die Umgebung bereit ist, beginnt die eigentliche Plugin-Erstellung. Zunächst legen Sie die grundlegende Ordner- und Dateistruktur an:

Schritt 1: Wechseln Sie in das Verzeichnis wp-content/plugins.

Schritt 2: Legen Sie einen neuen Ordner an, z. B. mein-plugin.

Schritt 3: Erstellen Sie darin die Datei mein-plugin.php und öffnen Sie diese.

Anschließend definieren Sie die notwendigen Plugin-Metadaten im sogenannten Plugin-Header.

Plugin-Header schreiben

Damit WordPress Ihr Plugin auch erkennt, benötigt Ihre Hauptdatei mein-plugin.php einen Header-Kommentar. Er enthält wichtige Metainformationen wie Name, Beschreibung, Version und Autor:

<?php /* Plugin Name: Mein Beispiel-Plugin Description: Dieses Plugin zeigt eine Admin-Benachrichtigung im Dashboard an. Version: 1.0 Author: Max Mustermann License: GPLv2 */

Mindestens der Wert „Plugin Name“ ist erforderlich. Ohne ihn erkennt WordPress das Plugin nicht und listet es auch nicht im Backend Ihrer Installation.

Optional können Sie weitere Felder angeben. Das ist vor allem dann sinnvoll, wenn Sie Ihr Plugin später veröffentlichen oder internationalisieren möchten. Ein Beispiel für einen vollständigen Plugin-Header mit allen gängigen Feldern laut dem WordPress Plugin Developer Handbook:

<?php /* Plugin Name: Mein Beispiel-Plugin Plugin URI: https://example.com/mein-beispiel-plugin Description: Dieses Plugin zeigt eine Admin-Benachrichtigung im Dashboard. Version: 1.0 Requires at least: 6.0 Tested up to: 6.9.1 Requires PHP: 8.1 Author: Max Mustermann Author URI: https://example.com License: GPLv2 License URI: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html Text Domain: mein-beispiel-plugin Domain Path: /languages */
Das bedeuten die Felder:

Feldname

Beschreibung

Plugin Name

Wird im Backend als Name des Plugins angezeigt

Plugin URI

Link zur Projekt- oder Plugin-Website

Description

Kurzbeschreibung, erscheint im Plugin-Bereich im Backend

Version

Versionsnummer des Plugins

Requires at least

Mindestanforderung an die WordPress-Version

Tested up to

Höchste WordPress-Version, mit der das Plugin getestet wurde

Requires PHP

Mindestanforderung an die PHP-Version

Author

Name des Entwicklers

Author URI

Website oder Profilseite des Autors

License

Lizenzangabe, z. B. GPLv2

License URI

Link zum vollständigen Lizenztext

Text Domain

Kennung zur Übersetzbarkeit des Plugins mit gettext

Domain Path

Speicherort für Sprachdateien innerhalb des Plugins

Speichern Sie die Datei mein-plugin.php mit Ihrem Header-Kommentar. Im nächsten Schritt geht es dann los mit der eigentlichen Arbeit an Ihrem Plugin.

3.

Erste Funktion programmieren

Nach der Initialisierung folgt nun das Herzstück Ihres ersten Plugins: eine eigene Funktion. Für den Einstieg eignet sich eine einfache Nachricht im WordPress-Dashboard, die zeigt, dass das Plugin korrekt geladen wurde.

function mein_plugin_admin_notice() { echo '<div class="notice notice-success"><p><strong>Mein Plugin wurde aktiviert!</strong></p>< } add_action('admin_notices', 'mein_plugin_admin_notice');

Der Code besteht aus drei Teilen:

  • 1.

    function definiert eine neue Funktion, in diesem Fall mein_plugin_admin_notice.

  • 2.

    echo gibt HTML aus. Die notice-Klasse erzeugt ein Hinweisfeld im Dashboard.

  • 3.

    add_action hängt Ihre Funktion an den gleichnamigen Hook.

Achten Sie bei allen Funktionsnamen auf einen eindeutigen Präfix. So vermeiden Sie Kollisionen mit anderen Plugins oder Themes. Denken Sie auch daran, Ihre PHP-Datei mit ?> korrekt zu schließen.

Im Editor Visual Code Studio sieht die Datei mein-plugin.php dann so aus. Sie besteht aus einem Header-Kommentar und einer Funktion:

Die Datei mein-plugin.php in Visual Code Studio.

Damit ist der Grundstein gelegt. Im nächsten Schritt aktivieren Sie das Plugin im WordPress-Backend, überprüfen das Ergebnis im Dashboard und analysieren mögliche Fehlerquellen, falls die Ausgabe nicht wie erwartet erscheint.

4.

Plugin aktivieren und testen

Sobald Sie die Plugin-Datei mit Header und erster Funktion gespeichert haben, können Sie das Plugin aktivieren und testen. So stellen Sie sicher, dass Ihre Funktion wie erwartet ausgeführt wird und keine Fehler auftreten.

Schritt 1: Öffnen Sie den Plugin-Bereich im Backend Ihrer WordPress-Testumgebung.

Schritt 2: Suchen und aktivieren Sie Ihr Plugin (Mein Beispiel-Plugin).

Wenn Sie alles richtig gemacht haben, führt WordPress Ihre Funktion sofort nach Aktivierung des Plugins aus. Es erscheint eine Mitteilung mit dem Text „Mein Plugin wurde aktiviert!“:

Das Plugin ist erfolgreich aktiviert.

Um sicherzugehen, dass das Plugin auch wirklich korrekt arbeitet, prüfen Sie die folgenden Punkte:

Fehlerdiagnose: Wenn nichts passiert

Falls keine Ausgabe erfolgt oder WordPress das Plugin nicht erkennt, können verschiedene Ursachen verantwortlich sein. Hier sind einige der häufigsten Fehlerquellen:

Mögliche Ursache

Lösung

Plugin nicht aktiviert

In der Plugin-Übersicht auf „Aktivieren“ klicken

Header nicht korrekt

Prüfen Sie, ob ein Wert bei „Plugin Name:“ im Header-Kommentarblock vorhanden ist

PHP-Syntaxfehler

Fehler im Editor korrigieren, siehe Code-Beispiel oben

Hook falsch geschrieben

Statt admin_notice muss es admin_notices heißen

Funktionsname nicht identisch

Funktion und add_action-Eintrag müssen exakt übereinstimmen

5.

Plugin erweitern und Struktur aufbauen

WordPress bietet Ihnen einfache, modulare Wege, um Ihr Plugin Schritt für Schritt zu erweitern. Bereits mit wenigen zusätzlichen Zeilen Code können Sie neue Funktionen integrieren, die Ihrer Website echten Mehrwert bringen. Das kann z. B. über Shortcodes oder eine eigene Einstellungsseite für Ihr Plugin geschehen.

Shortcodes erstellen

Shortcodes sind Textbausteine in eckigen Klammern wie [mein_shortcode], die Inhalte an beliebiger Stelle einfügen. Sie eignen sich für Texte, Hinweise oder wiederkehrende Elemente im Editor.

function mein_shortcode_text() { return '<p>Willkommen auf unserer Website!</p>'; } add_shortcode('mein_shortcode', 'mein_shortcode_text');

Haben Sie die Funktion mein_shortcode_text erstellt, fügen Sie [mein_shortcode] in einen Beitrag oder eine Seite ein. WordPress ersetzt ihn beim Laden durch den gewünschten HTML-Text.

Einstellungsseite im WordPress-Backend

Sobald Ihr Plugin konfigurierbare Inhalte braucht (z. B. Texte, Farben, Optionen), lohnt sich eine eigene Einstellungsseite. Das folgende Beispiel nutzt die WordPress Settings API und speichert einen Textwert als Option:

add_action('admin_menu', function () { add_options_page('Mein Plugin', 'Mein Plugin', 'manage_options', 'mein-plugin', 'mein_plugin_seite'); }); function mein_plugin_seite() { ?> <div class="wrap"> <h1>Mein Plugin: Einstellungen</h1> <form method="post" action="options.php"> <?php settings_fields('mein_plugin_gruppe'); do_settings_sections('mein_plugin'); submit_button(); ?> </form> </div> <?php } add_action('admin_init', function () { register_setting('mein_plugin_gruppe', 'mein_plugin_text'); add_settings_section('mein_plugin_abschnitt', '', null, 'mein_plugin'); add_settings_field('mein_plugin_textfeld', 'Anzeigetext', function () { $wert = get_option('mein_plugin_text', ''); echo "<input type='text' name='mein_plugin_text' value='" . esc_attr($wert) . "' />"; }, 'mein_plugin', 'mein_plugin_abschnitt'); });

In den WordPress-Einstellungen erscheint so unter „Mein Plugin“ eine eigene Seite mit Eingabefeld:

Eine einfache Einstellungsseite ist schnell erstellt.

Plugins mit mehreren Dateien

Ein WordPress-Plugin besteht in der Regel aus mehreren Dateien. Sobald mehr als „ein paar Funktionen“ dazukommen, zahlt sich eine klare Struktur aus. Eine typische, gut wartbare Plugin-Struktur sieht so aus:

mein-plugin/ ├── mein-plugin.php # Hauptdatei mit Plugin-Header ├── uninstall.php # Code zur Entfernung des Plugins ├── includes/ # PHP-Funktionen für Frontend & Admin │ ├── class-admin.php │ └── class-public.php ├── assets/ │ ├── css/ # Stylesheets │ ├── js/ # JavaScript │ └── images/ # Icons, Logos, UI-Grafiken └── languages/ # Übersetzungsdateien (.pot/.mo)

Diese Struktur entspricht dem Standard vieler Plugins. Damit trennen Sie Admin-Code (z. B. Menüs, Settings) sauber von Frontend-Code (z. B. Shortcodes, Widgets) und behalten bei Updates und Erweiterungen die Übersicht.

PHP-Code in andere Dateien auslagern

Lagern Sie Funktionen aus der Hauptdatei in eigene Dateien im includes/-Ordner aus und binden Sie sie mit include_once ein. Das sorgt für mehr Übersicht, kürzere Dateien und reduziert Redundanz bei wachsenden Codebasen.

include_once plugin_dir_path(__FILE__) . 'includes/class-admin.php';

CSS und JavaScript korrekt einbinden

CSS- und JavaScript-Dateien sollten Sie nicht manuell über <link> oder <script> einbinden. Nutzen Sie stattdessen die WordPress-Funktionen wp_enqueue_style() und wp_enqueue_script():

function mein_plugin_enqueue_scripts() { wp_enqueue_style('mein-plugin-style', plugin_dir_url(__FILE__).'assets/css/style.css'); wp_enqueue_script('mein-plugin-js', plugin_dir_url(__FILE__).'assets/js/script.js', array('jquery'), '1.0', true); } add_action('wp_enqueue_scripts', 'mein_plugin_enqueue_scripts');

Wichtig: Verwenden Sie plugin_dir_url(__FILE__) zur dynamischen Pfadermittlung. So bleibt Ihr Plugin unabhängig vom Installationsverzeichnis.

6.

Best Practices beachten

Je größer ein Plugin wird, desto wichtiger ist es, strukturiert und vorausschauend zu arbeiten. Schon bei kleinen Erweiterungen sollten Sie bewährte Grundregeln einhalten.

Das hilft nicht nur, technische Fehler zu vermeiden, sondern erleichtert auch spätere Wartung, Erweiterungen oder eine Veröffentlichung. Die folgenden Best Practices sind dafür ein guter Einstieg.

Vermeiden Sie generische Funktionsnamen

Vermeiden Sie Funktionsnamen wie load_settings() oder save_data(). In einem WordPress-System laufen potenziell Dutzende Plugins. Funktionskonflikte sind ein häufiger Fehlergrund.

Verwenden Sie stattdessen eindeutige Namenskonventionen:

function meinplugin_load_settings() { ... }

Alternativ können Sie Namespaces verwenden, besonders bei größeren Projekten:

namespace MeinPlugin\Admin; function load_settings() { ... }

Schützen Sie jede PHP-Datei vor direktem Zugriff

Verhindern Sie den direkten Aufruf Ihrer Dateien über den Browser, indem Sie am Anfang jeder PHP-Datei prüfen, ob WordPress geladen wurde:

if (!defined('ABSPATH')) exit;

Diese Bedingung verhindert, dass jemand Ihre Datei direkt über den Browser aufruft und potenziell ungesicherte Funktionen ausführt.

Validieren Sie Eingaben und escapen Sie Ausgaben

Nutzen Sie die vorhandenen Funktionen des WordPress-Core, um Benutzereingaben abzusichern:

Aktion

WordPress-Funktion

Texte validieren

sanitize_text_field()

URLs validieren

esc_url_raw()

HTML ausgeben

esc_html()

Attribute escapen

esc_attr()

SQL absichern

$wpdb->prepare()

Ungefilterte Eingaben stellen ein ernsthaftes Sicherheitsrisiko dar. Sicherheitslücken wie XSS, CSRF oder SQL-Injection vermeiden Sie weitgehend durch konsequente Datenvalidierung.

Nutzen Sie konsequent die WordPress-APIs

Greifen Sie bei Datenbankzugriffen, Formularfeldern, Optionen und Benutzerrollen stets auf die Core-APIs zurück. Diese Funktionen sind nicht nur sicherer, sondern auch zukunftssicher:

  • get_option(), update_option()

  • wp_nonce_field(), check_admin_referer()

  • $wpdb->insert(), $wpdb->prepare()

Vermeiden Sie hingegen direkte Datenbankabfragen per mysqli_query() oder mysql_query(). Diese Methoden sind unsicher und in modernen WordPress-Versionen veraltet.

Planen Sie Internationalisierung frühzeitig ein (i18n)

Wenn Sie planen, Ihr Plugin auch in anderen Sprachversionen anzubieten, sollten Sie Internationalisierung von Anfang an einplanen:

  • 1.

    Fügen Sie im Header das Feld „Text Domain: mein-plugin“ hinzu (Kennung für Übersetzungen)

  • 2.

    Verwenden Sie __() und _e() für alle Texte

  • 3.

    Legen Sie .pot/.mo/.po-Dateien im Ordner languages/ ab

So stellen Sie von Anfang an sicher, dass Ihr Plugin mit gängigen Übersetzungstools wie Loco Translate oder WPML kompatibel ist.

Dokumentieren und warten Sie Ihr Plugin regelmäßig

Dokumentieren Sie Logik im Code mit Kommentaren. Das erleichtert nicht nur Ihnen, sondern auch allen künftigen Nutzern und Mitentwicklern die Arbeit.

Zusätzlich empfiehlt sich eine strukturierte readme.txt-Datei im Format des WordPress-Plugin-Verzeichnisses, wenn Sie Ihr Plugin veröffentlichen möchten.

Ein nicht gepflegtes Plugin verliert mit jeder neuen WordPress-Version an Zuverlässigkeit. Planen Sie regelmäßige Tests und Updates ein, mindestens bei jedem größeren Core-Update.

Fazit: Mehr Kontrolle durch eigene Plugins

Das Fundament steht: Sie haben Ihr erstes eigenes WordPress-Plugin erstellt – und damit einen entscheidenden Schritt gemacht. Sie verstehen nun nicht nur, wie WordPress funktioniert, sondern auch, wie Sie das System gezielt erweitern. Das unterscheidet Anwender von Entwicklern.

Ein eigenes Plugin ermöglicht Ihnen nicht nur mehr Kontrolle über Ihre Website, sondern macht Sie auch unabhängig von oft überladenen Drittanbieter-Erweiterungen. Sie entscheiden selbst, was und wann in welchem Umfang passiert.

Wie geht es jetzt weiter? Mit den hier gezeigten Grundlagen haben Sie eine stabile Basis geschaffen. Darauf können Sie aufbauen – etwa mit weiterführenden Konzepten wie:

  • Custom Post Types

  • eigene Gutenberg-Blöcke

  • Multisite-Kompatibilität

  • Plugin-Deployment via GitHub oder WordPress.org

WordPress gibt Ihnen die nötigen Werkzeuge an die Hand. Wenn Sie strukturiert arbeiten und bewährte Best Practices einhalten, können Sie Ihr Plugin Schritt für Schritt weiterentwickeln.

Top WordPress Hosting 2026
Gesponsert
ab  3,68 €
pro Monat
Hostinger
ab  8,91 €
pro Monat
SiteGround
ab  25,14 €
pro Monat
Kinsta
ab  4,50 €
pro Monat
IONOS
Simon Stich arbeitet als IT-Journalist und Webentwickler mit Schwerpunkt WordPress. Sein eigenes Unternehmen hat er 2009 gegründet. Nach mehreren Stationen im In- und Ausland lebt er heute in Freiburg im Breisgau.
Mehr zum Thema