Webdesign Kassel

WordPress‐Hooks
die coolsten Aufhänger seit es CMS gibt

Zwei Haken fürs bequeme Coden

Anschaulich erklärt:
Wie Wordpress‐Hooks das Leben leichter machen.
So bereicherst du Wordpress mit Funktionen, ohne den Core aufzubohren.

WordPress‐Hooks <br>die coolsten Aufhänger seit es CMS gibt

Hardcode im Core und das Problem beim WordPress‐Update…

Webentwickler kennen das Dilemma: Will man WordPress mit eigenen Funktionen erweitern, dann heißt es oftmals den Kern aufzubohren und am offenen Herzen zu coden. Nach mehr oder weniger vielen Komplikationen freut man sich dann, das Ergebnis zu haben, das man sich vorgestellt hat. Dabei gibt es allerdings einen kleinen Haken, denn beim nächsten Update geht die komplette Arbeit flöten. Das Übel könnte man nun mit einem mühsamen, ständigen Wiederholen aller Änderungen beseitigen oder mit WordPress selbst, denn das beliebte CMS hat auch Haken, die machen allerdings keine Probleme, sondern lösen sie schnell und elegant. Wir zeigen euch, wie’s geht.

WordPress‐Hooks – die systemeigenen Problemlöser

In unserer komplizierten Welt klingt die Funktionsweise der WordPress‐Hooks beinahe zu einfach, um wahr zu sein, doch es handelt sich tatsächlich um Häkchen, mit denen Funktionen im WordPress‐ Code eingehängt werden wie ein Kleiderbügel auf die Stange. Der riesige Vorteil dabei ist, dass unsere Kleiderbügel nicht irgendwo aufgehängt werden, sondern in der functions.php (Child-Theme) oder direkt in einem externen Plugin. So bleibt der WordPress‐Core unberührt und Änderungen überstehen jedes folgende WordPress‐Update, ohne überschrieben zu werden. Ratsam also, die Hooks genauer zu betrachten, die in zwei Arten unterschieden werden: Actions und Filters.

Action‐Hooks – mach’s einfach, ok?

Die Action‐ und Filter‐Haken funktionieren sehr ähnlich, aber nicht identisch. Vereinfacht ausgedrückt, kommt der Action‐Hook ganz im Wortsinne immer dann zum Einsatz, wenn „sich etwas tut“, wenn an der eingehakten Stelle also eine Aktion stattfinden soll. Beispielsweise könnte mit dem Action‐Hook automatisiert ein Twitter‐Beitrag abgesetzt werden, sobald ein WordPress‐Autor einen neuen Artikel veröffentlicht.

Filter‐Hooks – ein Geben und ein Nehmen

Mit Filter‐Hooks werden Daten abgerufen oder verändert, bevor sie im Browser dargestellt oder in der Datenbank gespeichert werden. Auch hier wird ein Beispiel für Klarheit sorgen: Möchte man am Ende eines Artikels die letzten drei Artikel derselben Kategorie mit einem Auszug von 200 Zeichen darstellen, ist ein Filter das Mittel der Wahl. Dieser greift auf die komplette Kategorie und deren Artikel zu, filtert die definierten Werte und stellt sie an der Stelle des Hooks dar. Entsprechend muss im Gegensatz zu Actions beim Filter mit „return“ ein Wert zurückgegeben werden.

Klingt gut, aber wo ist der Haken – und vor allem:
wie wird eingehakt?

Was die WordPress‐Hooks so großartig macht, ist, dass sie eben an jeder Funktion gesetzt werden können, sei es ein Action‐Hook beim Login oder ein Filter‐Hook bei den Kommentaren, z.B. um gepostete Links zu großen Online‐Shops automatisch mit der eigenen Partner‐ID zu verknüpfen. Der Kreativität sind keine Grenzen gesetzt und WordPress lässt sich bis ins Detail den eigenen Ansprüchen anpassen, ohne den PHP‐Quellcode zu verändern. Das Einfügen der WordPress‐Hooks ist dann auch kein Hexenwerk, sondern ruckzuck erledigt.

Den Action‐Hook setzt Du so:

add_action( $tag, $function_to_add, $priority, $accepted_args );

Die Parameter im Überblick:

  •  $tag bezeichnet den Hook, also die Stelle im Code, an der eine Funktion eingehakt werden soll
  •  $function_to_add bestimmt die neue Filterfunktion, die ausgeführt werden soll
  •  $priority gibt die Priorität an, in welcher Reihenfolge Funktionen an dieser Stelle ausgeführt werden sollen. Mögliche Werte reichen von 1‐999, der Standardwert ist 10. (Je geringer der Wert, desto früher erfolgt die Ausführung)
  •  $accepted_args beschreibt die Anzahl der akzeptierten Argumente. Der Standardwert ist 1.

Beim Action‐Hook sind die Standardwerte meist ausreichend, weil an dieser Stelle lediglich eine Aktion ausgeführt und keine Daten ausgegeben werden.

Entfernt wird ein Action‐Hook mit:

remove_action( $tag, $function_to_remove, $priority );

Das Setzen und Entfernen des Filter‐Hooks funktioniert genauso:

add_filter( $tag, $function_to_add, $priority, $accepted_args ); bzw.
remove_filter( $tag, $function_to_remove, $priority );

Die Parameter entsprechen denen des Action‐Hooks, wobei die Anzahl der Argumente beim Filter wichtiger ist, zum Beispiel, wenn aus einem Artikel mehrere Variablen wie Titel, Auszug oder Metadaten gefiltert und ausgegeben werden sollen.

Experimente am lebenden Code – Beispiele für die Praxis

Wie man sieht, sind die WordPress‐Hooks an sich relativ einfach gestrickt und bieten selbst unerfahrenen Webentwicklern unzählige Möglichkeiten, eigene WordPress‐Funktionen umzusetzen. Erfahrenen Codern steht mit den WordPress‐Hooks das Tor zu komplexen Funktionen offen, mit denen sich ganze WordPress‐Auftritte komplett umkrempeln lassen, ohne auch nur eine einzige Zeile im Quellcode anzurühren. Für einen breiteren Einsatz lassen sich ebenso mächtige Plugins realisieren, welche die WordPress‐Performance nicht ausbremsen, sondern – je nach Art – ein Plus an Stabilität und Sicherheit mit sich bringen können. Aber weil ein Code mehr sagt als tausend Worte, haben wir jeweils ein Code‐Schnipsel aus dem WordPress‐Codex zur Illustration der Action‐ und Filter‐Hooks für euch herausgesucht.

Action‐Hook: Im Folgenden erhält der Autor eines Artikels bei Veröffentlichung eine Bestätigung per E‐Mail über wp‐mail:

function post_published_notification( $ID, $post ) {
$author = $post‐>post_author; /* Post author ID. */
$name = get_the_author_meta( 'display_name', $author );
$email = get_the_author_meta( 'user_email', $author );
$title = $post‐>post_title;
$permalink = get_permalink( $ID );
$edit = get_edit_post_link( $ID, '' );
$to[] = sprintf( '%s <%s>', $name, $email );
$subject = sprintf( 'Published: %s', $title );
$message = sprintf ('Congratulations, %s! Your article “%s” has been published.' . "\n\n",

$name, $title );
$message .= sprintf( 'View: %s', $permalink ); $headers[] = '';
wp_mail( $to, $subject, $message, $headers );

}
add_action( 'publish_post', 'post_published_notification', 10, 2 );

Filter‐Hook: Das folgende Beispiel, ebenfalls aus dem WordPress‐Codex, zeigt, wie sich die voreingestellten Maße für eingebettete Medien beispielsweise für ein Child‐Theme per Filter verändern lassen:

add_filter( 'embed_defaults', 'modify_embed_defaults' ); function modify_embed_defaults() {

return array( 'width' => 750, 'height' => 375

); }

Was für WordPress‐Hooks gibt es denn so?

Der WordPress‐Core bietet eine beachtliche Anzahl bereits registrierter Hooks, an die sich eigene oder veränderte Funktionen andocken lassen. Eine nicht vollständige Übersicht der WordPress‐Hooks liefert das CMS selbst. Die gängigsten Action‐Hooks und Filter‐Hooks findest du im WordPress‐Codex übersichtlich aufgelistet mit teilweise detaillierterer Erklärung.

Action‐Hooks: https://codex.w…Action_Reference
Filter‐Hooks: https://codex.w…Filter_Reference

Woocommerce Hooks:
https://woocommerce.com/…/hook-docs.html

Be inspired – fast grenzenlose Möglichkeiten

Dank der WordPress‐Hooks gibt es im Grunde kaum eine Funktion, die sich nicht realisieren ließe. Vergessen deine Autoren zum Beispiel öfter mal das Beitragsbild bei der Veröffentlichung? Dann mach das Einfügen per Action‐Hook einfach zur Pflicht und lasst im WordPress‐Backend eine Fehlermeldung ausgeben, wenn das Bild vergessen wurde. Oder lasse dich per E‐Mail benachrichtigen, wenn ein Autor drei Mal das falsche Passwort beim Einloggen eingegeben hat.

Möge der Hook mit euch sein

Ganz gleich, wie kreativ deine Funktionen sind, die WordPress‐Hooks erlauben die Ausführung genauso, wie du es wünscht, und genau dort, wo du es willst. Auf diese Weise behälst du die volle Code‐Kontrolle und musst nicht auf dubiose Plugins setzen, die deine Performance ausbremsen, unsicheren Code enthalten oder gar Fehler verursachen. Weil deine Hooks von WordPress‐Updates auch zukünftig nicht überschrieben werden, können vor allem Webentwickler viel Zeit und Aufwand sparen, wenn zahlreiche Kundenprojekte betreut werden müssen.

Sich umfassend in diesem Artikel mit den WordPress‐Hooks zu beschäftigen ist unmöglich, zeigt aber eindrucksvoll, dass sich eine tiefere Auseinandersetzung mit dem Thema lohnt.

Du hast noch Fragen zu diesem Thema?
Stell sie uns unten in den Kommentaren!

Tags:

Meinungen und Feedback zu diesem Artikel sind uns sehr wichtig!

Belebe die Diskussion und verfasse einen Kommentar mit deiner Meinung zum Thema.

Name*
E-Mail*
Website*

*Wir schalten keine Kommentare mit offensichtlichen Keywords als Linktext frei. Alle Links sind No-Follow und die E-Mail-Adresse wird nicht veröffentlicht.

Danke für diese Einführung in das für mich sehr komplizierte Thema.

Ich würde mich sehr freuen, wenn ihr mal etwas über das schreiben von WordPress-Themes schreiben würdet.

Schöne Grüße
Daniel

Daniel | am 27. April 2017 um 10:54 Uhr

Hallo Daniel,
vielen Dank für dein Feedback.

Wir werden in der Zukunft noch viele Tutorials über das Entwicklen von WordPress-Themes/Plugins schreiben
und euch immer auf dem laufenden halten!

Gruß aus Nordhessen,
Tobias

Danke für den Überblick, aber für einen WordPress-Einsteiger, etwas viele Hooks. Mir würde schon der reichen, der mir die Kunden_id bzw. Kunden_email ausgibt.

rassloff | am 26. September 2017 um 00:28 Uhr

Hallo Rassloff,
was genau meinst du mit Kunden_id?
Die WordPress User ID, oder hast du in Woocommerce Kundennummern vergeben?
Wenn du uns ein paar mehr Infos gibst, können wir dir bestimmt helfen ;-)