WordPress Hooks – eine Einführung

Kategorie: Wordpress Tipps

Wird eine WordPress Seite aufgerufen, werden verschiedene Prozesse nacheinander ausgeführt. Durch einen Hook kann man sich über die functions.php in den WordPress-Code einhaken und diese Prozesse verändern. Die Hooks verbleiben in der separaten functions.php, sodass der WordPress-Core-Code unverändert bleibt, daher bleiben die Hooks auch nach einem Update bestehen. Es gibt zwei verschiedene Arten von Hooks:

  • Action Hooks
  • Filter Hooks

Action Hooks

Action Hooks kommen zum Einsatz, wenn eine Aktivität durchgeführt werden soll. Durch diese Hooks können verschiedene Anpassungen an Funktionen vorgenommen werden. Durch Action Hooks wird also an einer bestimmten Stelle Code ausgeführt. Action Hooks werden verwendet, wenn im WordPress Core die Funktion do_action() oder do_actions_ref_array() vorhanden sind. Hier kann dann mit einem Action Hook angedockt werden. Das bekannteste Beispiel ist die Veränderung von wp_head, um den Header-Bereich im HTML-Dokument zu modifizieren. Hier wird eine Meta-Description eingefügt, die beliebig variiert werden kann.

add_action('wp_head','meine_description');
function meine_description(){
	echo'<meta description="Hier steht die Meta-Description">';
}

Der Hook wp_head wird ausgewählt und die Funktion meine_description wird übergeben. Diese Funktion macht nichts anderes, als eine Meta-Description auszugeben. Folglich wird also im header-Bereich des HTML-Dokuments diese Meta-Description eingefügt.

Filter Hooks

Durch Filter Hooks werden Daten verändert, die bereits bestehen. Diese veränderten Daten werden dann weitergeleitet und gegebenenfalls ausgegeben. Filter Hooks setzen an den Core-Funktionen apply_filters() oder apply_filters_ref_array() an. Beispielsweise kann man Titel the_title, den man im WordPress-Backend eingibt durch einen Filter so manipulieren, dass er immer als <h1>-Überschrift formatiert im Frontend ausgegeben wird.

add_filter('the_title','h1_title');
function h1_title($title){
	return "<h1>$title</h1>";
}