Dieser Artikel stammt ursprünglich aus dem Jahr 2012. Er wurde im Januar 2020 überarbeitet und aktualisiert.

Wenn du mit WordPress-Themes und PlugIns arbeitest, begegnest du früher oder später dem Stichwort „Hook“. Was verbirgt sich dahinter und was kann man damit tun?

Über einen Hook kannst du eigene Funktionen an einer definierten Stelle im WordPress-Code „einhaken“.
Die Hook-Funktionen werden in die functions.php-Datei im Theme-Ordner eingetragen oder in ein PlugIn ausgelagert.

Es gibt zwei Arten von Hooks: Actions und Filters.

Zwei Prinzipien: Actions und Filters

A. Actions

Die Andockstellen für Action-Hooks sind alle Punkte, an denen die Entwickler vom WordPress Core ein do_action(); platziert haben.

Ein klassisches Beispiel ist der Hook wp_head. 

function wp_head(){
do_action ('wp_head');
}

Dieser Hook markiert die Stelle, die du ansprechen musst, wenn du etwas im head-Bereich des HTML-Codes platzieren möchtest. Mit dieser Funktion würdest du beispielsweise eine CSS-Anweisung in den head-Bereich hineinschreiben:

function netzialisten_hook_css() {
?>
<style>
.beispiel {
background-color : pink;
}
</style>
<?php
}
add_action('wp_head', 'netzialisten_hook_css');

Ein Hook, der in jedem Theme vorkommt, ist dieser hier:

function netzialisten_enqueue_style() {
wp_enqueue_style( 'netzialisten-style', 'style.css', false );
}
add_action( 'wp_enqueue_scripts', 'netzialisten_enqueue_script' );

Damit bindet man die CSS-Datei ins Theme ein.

Das Prinzip der Actions

Hinter einem Action-Hook steht das, was der Name schon sagt: Eine Aktion. An einer bestimmten Stelle oder zu einem bestimmten Zeitpunkt soll etwas passieren.
Etwas soll in den <head>-Bereich geschrieben werden oder WordPress soll jedes Mal eine E-Mail versenden, wenn ein neuer Post erschienen ist.

B. Filter

Die Andockstellen für Filter-Hooks sind die Stellen, an denen die Entwickler ein vom WordPress Core ein apply_filters(); platziert haben.

Das Prinzip der Filter

Beim Filtern von Informationen arbeitest du mit Material, das schon da ist. Du erzeugt also nichts Neues, sondern arbeitest mit bereits vorhandenen Informationen. Der Filter tut seine Arbeit quasi als Mittelsmann: Er verändert die Daten bevor sie im Browser ausgegeben werden oder er analysiert und filtert sie, bevor sie in der Datenbank gespeichert werden.
Ein Filter gibt in der Regel einen Wert zurück, der das Ergebnis seiner Arbeit enthält.

Ein Beispiel für einen Filter wäre so etwas:

function add_copy_right_note( $content ){
return $content . " <br>© Alle Rechte vorbehalten.";
}
add_filter( 'the_content', 'add_copy_right_note' );

Diese Funktion nutzt den Hook the_content und gibt am Ende jedes Artikels die Meldung „© Alle Rechte vorbehalten.“ aus.

Typisch für einen Filter ist, dass Dinge aneinander gehängt werden. Zuerst kommt der Inhalt des Artikels ($content) und an den wird eine Ergänzung „Alle Rechte vorbehalten“ angehängt.

Alles über Hooks und Filter gibt es im Plugin-Handbuch.