WordPress Plugin erstellen: Eine Einführung für Entwickler und Einsteiger
Eigene WordPress-Plugins zu entwickeln gibt dir die volle Kontrolle über die Funktionalität deiner Website. Statt auf Drittanbieter-Plugins mit unnötigem Ballast zu setzen, erstellst du maßgeschneiderte Lösungen für genau deine Anforderungen. Dieser Guide führt dich von den Grundlagen der Plugin-Entwicklung bis zu einem funktionsfähigen Plugin.
Grundstruktur eines WordPress-Plugins
Der Plugin-Header
Jedes WordPress-Plugin beginnt mit einem PHP-Kommentarblock, der WordPress die grundlegenden Informationen liefert:
<?php
/*
Plugin Name: Mein erstes Plugin
Description: Beschreibung der Funktionalität
Version: 1.0
Author: Dein Name
*/
Speichere diese Datei im Ordner /wp-content/plugins/mein-plugin/mein-plugin.php. WordPress erkennt das Plugin automatisch und zeigt es unter Plugins im Dashboard an.
Hooks: Actions und Filter
WordPress-Plugins basieren auf dem Hook-System. Actions führen Code an bestimmten Stellen aus (z.B. beim Seitenladen, beim Speichern eines Posts). Filter modifizieren Daten, bevor sie ausgegeben werden (z.B. den Post-Titel oder den Content).
// Action: Code beim Laden des Footers ausführen
add_action('wp_footer', 'mein_footer_text');
function mein_footer_text() {
echo '<p>Custom Footer Text</p>';
}
// Filter: Post-Titel modifizieren
add_filter('the_title', 'mein_titel_filter');
function mein_titel_filter($title) {
return $title . ' ★';
}
Ein praktisches Plugin entwickeln: Custom Shortcode
Als erstes Plugin erstellen wir einen Shortcode, der eine Info-Box ausgibt:
function infobox_shortcode($atts, $content = null) {
$atts = shortcode_atts(array(
'type' => 'info',
'title' => '',
), $atts);
$output = '<div class="infobox infobox-' . esc_attr($atts['type']) . '">';
if ($atts['title']) {
$output .= '<h4>' . esc_html($atts['title']) . '</h4>';
}
$output .= '<p>' . wp_kses_post($content) . '</p>';
$output .= '</div>';
return $output;
}
add_shortcode('infobox', 'infobox_shortcode');
Plugin-Sicherheit: Best Practices
- Input sanitisieren:
sanitize_text_field(),esc_html(),wp_kses_post() - Nonces verwenden: Schütze Formulare und AJAX-Anfragen mit WordPress Nonces
- Capabilities prüfen:
current_user_can('manage_options')vor Admin-Aktionen - SQL-Injection verhindern: Nutze
$wpdb->prepare()für Datenbankabfragen - Direkte Dateizugriffe blockieren:
defined('ABSPATH') || exit;am Dateianfang
Plugin mit Admin-Seite erweitern
Professionelle Plugins bieten eine Einstellungsseite im WordPress-Dashboard:
add_action('admin_menu', 'mein_plugin_menu');
function mein_plugin_menu() {
add_options_page(
'Mein Plugin Einstellungen',
'Mein Plugin',
'manage_options',
'mein-plugin',
'mein_plugin_settings_page'
);
}
Die Settings-API von WordPress bietet ein standardisiertes Framework für Einstellungsseiten mit automatischer Validierung und Speicherung.
Plugin im WordPress-Repository veröffentlichen
Wenn dein Plugin ausgereift ist, kannst du es im offiziellen WordPress-Plugin-Verzeichnis veröffentlichen. Dafür brauchst du ein SVN-Repository, eine readme.txt mit dem WordPress-Standard-Format und musst die Plugin-Richtlinien einhalten. Der Review-Prozess dauert typischerweise 1-3 Wochen.
Häufig gestellte Fragen zur WordPress-Plugin-Entwicklung
Welche Programmiersprache brauche ich?
PHP ist die Hauptsprache für WordPress-Plugins. Für Frontend-Funktionalitäten brauchst du zusätzlich JavaScript/jQuery. Grundkenntnisse in HTML und CSS sind ebenfalls hilfreich.
Wie unterscheidet sich ein Plugin von einem Child Theme?
Plugins fügen Funktionalität hinzu, Child Themes passen das Design an. Funktionalität, die unabhängig vom Theme arbeiten soll (Custom Post Types, Shortcodes, API-Integrationen), gehört in ein Plugin. Theme-spezifische Anpassungen (Template-Overrides, Design-Änderungen) gehören ins Child Theme.
Wie debugge ich ein WordPress-Plugin?
Aktiviere WP_DEBUG und WP_DEBUG_LOG in der wp-config.php. Fehler werden in /wp-content/debug.log protokolliert. Query Monitor ist ein nützliches Plugin für Performance-Debugging und Hook-Analyse.
Verlangsamen viele Plugins die Website?
Die Anzahl der Plugins ist weniger entscheidend als deren Qualität. Ein schlecht programmiertes Plugin kann mehr Schaden anrichten als 20 gut optimierte. Prüfe die Auswirkung jedes Plugins auf die Ladezeit mit Tools wie Query Monitor oder GTmetrix.