Читать книгу Entwicklung von WordPress-Plugins - Onno Gabriel - Страница 8

Filter

Оглавление

Die Filter funktionieren analog zu den eben beschriebenen Actions, mit den Unterschied, dass ein Filter nicht dazu gedacht ist, eigenen Code einzufügen als vielmehr den Rückgabewert einer schon bestehenden Funktion zu modifizieren. Auf diese Weise kann ein Wert verändert werden, bevor er beispielsweise zum Browser ausgeliefert wird oder – auf dem umgekehrten Weg – in die Datenbank geschrieben wird.

Das Verbinden einer eigenen Funktion mit einem Filter-Hook geschieht über die Funktion add_filter():

add_filter( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

Die Argumente sind analog zu der Funktion add_action() für Actions definiert:

 $tag ist der Name des Filter-Hook (erforderlich).

 $function_to_add ist der Name der Funktion, die aufgerufen werden soll (erforderlich).

 $priority legt die Priorität des Funktionsaufrufs fest (optional; Standard = 10). Falls mehrere Funktionen mit einem Hook verbunden sind, werden zunächst jene mit kleinerer Nummer aufgerufen.

 $accepted_args ist die (optionale) Zahl der Argumente, die mit dem Funktionsaufruf übergeben werden.

Wie bei den Actions können auch für Filter eigene Hooks gesetzt werden. Dies geschieht über die Funktion apply_filters():

apply_filters( string $tag, mixed $value, mixed $var )

Hier ist $tag wieder der Name des Hooks, $value der zu filternde Wert und $var sind optionale, weitere für die Berechnung des neuen Wertes notwendige Variablen.

Ein Beispiel für einen Filter, der unter jedem angezeigten Post einen Satz mit der Anzahl der Worte des Posts hinzufügt:

<?php // Eigene Funktion an 'the_content' einhaken: add_filter( 'the_content', 'mein_content_filter' ); // Eigene Funktion, die die Zahl der Worte in einem // Post zählt und unter den Post hängt: function mein_content_filter( $content ) { // Wörter in $content zählen (ohne Tags): $count = str_word_count( strip_tags( $content ) ); // Satz mit Wortanzahl hinzufügen: $content .= sprintf( 'Dieser Beitrag enthält %s Worte.', $count ); // $content zurück geben. return $content; } ?>

WordPress bietet noch eine Reihe weiterer Funktionen rund um das Arbeiten mit Aktionen und Filtern, wie zum Beispiel das Entfernen von Hooks über remove_action() bzw. remove_filter(). Näheres dazu findet sich auf der Webseite Advanced Topics in der WordPress-Dokumentation.

Entwicklung von WordPress-Plugins

Подняться наверх