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>";
}