In apply_filters ()
apply_filters( $tag, $value, $var ... );
Ich habe Probleme, den Kopf um den $value
und den $var
zu wickeln. Ich habe den Codex gelesen und es hört sich so an, als ob der $value
geändert werden kann, $var
nicht, aber ich habe keine Beispiele dafür in freier Wildbahn gefunden. Es scheint als eine Möglichkeit verwendet zu werden, eine Variable zu übergeben. In welchem Fall ist der Unterschied zum $var
?
Versuchen Sie, die Funktion mit besseren Namen zu sehen:
apply_filters(
$filter_name, // used for add_filter( $filter_name, 'callback' );
$value_to_change, // the only variable whose value you can change
$context_1, // context
$context_2 // more context
);
Also, wenn diese Funktion aufgerufen wird als:
// wp-login.php line 94
apply_filters( 'login_body_class', $classes, $action );
Sie können verwenden ...
add_filter( 'login_body_class', 'function_to_change_login_body_class', 10, 2 );
... und zwei Variablen an diese Funktion übergeben bekommen. Sie geben die erste zurück, die zweite liefert nur mehr Kontext:
function function_to_change_login_body_class( $classes, $action )
{
if ( 'login' === $action )
$classes[] = 'foo';
if ( 'postpass' === $action )
$classes[] = 'bar';
return $classes;
}
Die zusätzlichen Variablen dienen dazu, Ihre Entscheidungen zu vereinfachen und nicht zu ändern.
Filter sind Funktionen, die WordPress zu bestimmten Zeitpunkten der Ausführung durchläuft, bevor mit den Daten eine Aktion ausgeführt wird (z. B. Hinzufügen zur Datenbank oder Senden an den Browser-Bildschirm). Filter befinden sich zwischen der Datenbank und dem Browser (wenn WordPress Seiten generiert) und zwischen dem Browser und der Datenbank (wenn WordPress der Datenbank neue Beiträge und Kommentare hinzufügt). Die meiste Eingabe und Ausgabe in WordPress durchläuft mindestens einen Filter. WordPress filtert standardmäßig etwas, und Ihr Plugin kann seine eigene Filterung hinzufügen.
Damit Benutzer bestimmte Daten (einen Wert, die Ausgabe einer Funktion usw.) ändern können, werden Filter-Hooks über apply_filters
-Funktionen bereitgestellt.
Diese Filter-Hooks enthalten den Namen (oder Tag) des Filters und mindestens den Funktionsnamen, der für Filter verwendet werden soll (dh in irgendeiner Weise geändert werden soll) ) die Daten.
Um den Titel eines Posts zu ändern, können Sie den the_title
Filter-Hook verwenden, der wie folgt definiert ist:
apply_filters( 'the_title', $title, $id );
Das heißt, der Filter hat den Tag/Namen the_title
, der erste Parameter $title
sind die zu ändernden Daten (d. H. Der Posttitel) und der zweite Parameter $id
sind Zusatzinformationen (in diesem Fall die Post-ID).
Um beispielsweise den Titel jedes Posts in GROSSBUCHSTABEN anzuzeigen, können Sie die folgende Zeile verwenden:
add_filter('the_title', 'strtoupper');
Wenn wir uns die Funktion add_filter
ansehen, sehen wir, dass sie wie folgt definiert ist:
add_filter( $tag, $function_to_add, $priority, $accepted_args );
Wir haben nur den ersten und den zweiten (erforderlichen) Parameter angegeben, während der dritte und der vierte Parameter auf den jeweiligen Standardwert (d. H. 10
und 1
) eingestellt sind.
Wenn Sie nur einen bestimmten Beitrag filtern möchten , können Sie die zusätzlichen Informationen verwenden (im Falle dieses Filters: die ID). Dazu müssen Sie die Anzahl der Parameter angeben (in diesem Fall 2), und um dies erneut zu tun, müssen Sie den Prioritätsparameter angeben (der vor der Anzahl der Argumente steht).
Angenommen, wir möchten nur den Titel des Beitrags mit der ID 42 beeinflussen, dann sieht es so aus:
add_filter('the_title', 'my_strtoupper', 10, 2);
function my_strtoupper($title, $id) {
if (42 === $id) return strtoupper($title);
return $title;
} // function my_strtoupper
In diesem Fall müssen alle vier verfügbaren Parameter angegeben werden.
Um die (Anzahl) verfügbaren Parameter eines bestimmten Filters zu identifizieren, müssen Sie nachsehen, wo dieser definiert ist (in diesem Fall: hier ).
Referenzen :
apply_filters
Funktionadd_filter
Funktion