Begriffe vorab
- Callback: eine Funktion, die WordPress bei einem Hook aufruft.
- Priorität: Zahl, die die Reihenfolge mehrerer Callbacks am selben Hook festlegt.
- Erweiterungspunkt: ein Hook, den Kern, Theme oder Plugin bewusst bereitstellt.
Hooks sind das zentrale Erweiterungssystem von WordPress. Sie erlauben es, Code an definierten Stellen einzuhängen, ohne Kerndateien zu ändern. Es gibt zwei Arten: Actions und Filter.
Actions
Eine Action führt Code zu einem bestimmten Zeitpunkt aus, liefert aber keinen Rückgabewert. Der Kern löst sie mit do_action() aus, du registrierst dich mit add_action().
add_action( 'save_post', 'meinpraefix_nach_speichern', 20, 2 );
function meinpraefix_nach_speichern( $post_id, $post ) {
// Aktion nach dem Speichern eines Beitrags
}
Die Signatur lautet add_action( $hook, $callback, $priority = 10, $accepted_args = 1 ). Niedrigere Prioritäten laufen zuerst. $accepted_args legt fest, wie viele Argumente der Callback erhält.
Filter
Ein Filter verändert einen Wert und muss ihn immer zurückgeben. Der Kern ruft apply_filters() auf, du nutzt add_filter().
add_filter( 'the_content', 'meinpraefix_hinweis_anhaengen' );
function meinpraefix_hinweis_anhaengen( $content ) {
if ( is_single() ) {
$content .= '<p>Danke fürs Lesen!</p>';
}
return $content;
}
Vergisst ein Filter das
return, verschwindet der Wert, etwa der gesamte Beitragsinhalt.
Wichtige Hooks in der Reihenfolge
plugins_loaded: alle aktiven Plugins sind geladen.after_setup_theme: Theme-Features registrieren.init: Post Types, Taxonomien und Shortcodes registrieren.wp_enqueue_scripts: Skripte und Styles im Frontend einbinden.admin_menuundadmin_init: Backend-Menüs und Einstellungen.template_redirect: letzte Chance vor der Template-Ausgabe.
Hooks entfernen und prüfen
Mit remove_action() und remove_filter() löst du Callbacks wieder. Hook-Name, Callback und Priorität müssen exakt mit der Registrierung übereinstimmen. Mit has_action() und did_action() prüfst du den Zustand.
Eigene Hooks für andere Entwickler erstellst du mit do_action( 'meinpraefix_vor_ausgabe' ) oder apply_filters( 'meinpraefix_titel', $titel ).
Ein Praxisbeispiel
Du möchtest nach jedem Speichern eines Beitrags eine Benachrichtigung auslösen. Dafür reicht eine Action auf save_post. Möchtest du dagegen jeden Titel um ein Präfix ergänzen, nutzt du einen Filter auf the_title und gibst den geänderten Titel zurück. Faustregel: etwas tun = Action, etwas verändern = Filter.
Typische Stolperfallen
- Ein Filter ohne
returnlässt den Wert verschwinden. - Zu spät oder zu früh registrierte Hooks laufen ins Leere – der Zeitpunkt muss zum Ablauf passen.
- Dieselbe Funktion mehrfach zu registrieren führt zu doppelter Ausführung.
- Zum Entfernen müssen Hook, Callback und Priorität exakt stimmen.
Eigene Hooks anbieten
Wer ein Plugin oder Theme für andere baut, schafft mit do_action() und apply_filters() eigene Erweiterungspunkte. So können Dritte Verhalten anpassen, ohne deinen Code zu verändern. Präfixe für Hook-Namen verhindern Kollisionen.
Prüfstatus: Belegt (Stand 1. Oktober 2026): Jahreszahlen, Zahlen, Namen und Quellenangaben dieser Lektion, soweit die Quellenliste sie nennt, wurden gegen Primärquellen geprüft. Nicht einzeln belegt: erklärende Darstellung nach Lehrbuchstand und Quellen, die in der Liste als „allgemeine Referenz“ markiert sind. Codebeispiele sind nur auf Syntax geprüft, nicht in WordPress ausgeführt.
Quellen
- WordPress Plugin Handbook – „Hooks: Actions and Filters“ (developer.wordpress.org/plugins/hooks/) (allgemeine Referenz, nicht Zeile für Zeile geprüft)
- WordPress Developer Resources – Funktionsreferenzen zu add_action(), add_filter(), do_action(), apply_filters() (allgemeine Referenz, nicht Zeile für Zeile geprüft)