add_filter() richtig benutzen
add_filter() ist einer der WordPress-Funktionen, die WordPress tief im Kern als das ausmachen, was es ist: Hoch anpassbar!
Daher gehe ich in diesem Beitrag mehr auf diese wundervolle Funktion ein.
Will man einen Filter benutzen und so einen Wert ändern, kann man das mit
tun.
So kann man zB jedem Titel das Wort ’superwichtig‘ anhängen:
<?php add_filter( 'the_title', 'haenge_ein_wort_an_jeden_titel', 10, 2 ); function haenge_ein_wort_an_jeden_titel( $title, $id ) { return $title . ' superwichtig'; } ?>
Ich übergebe der Funktion add_filter() den Titel des gewünschten Filters (‚the_title‘), die auszuführende Funktion ‚haenge_ein_wort_an_jeden_titel‘, die Priorität ’10‘ und die Anzahl der Parameter, die ich verwenden möchte, (in dem Fall ‚2‘).
In meiner Funktion haenge_ein_wort_an_jeden_titel() kann ich jetzt mit dem Parameter $title und $id arbeiten.
Und genau hier kommt es zum
Missverständnis:
Nur der erste Parameter, $title, kann bearbeitet und zurückgegeben werden.
Der zweite Parameter ist nur da, um mit ihm zu arbeiten. Ihn für Abfragen, Schleifen o.ä zu verwenden aber nicht um ihn zurückzugeben.
Deutlicher als im Codex erklärt das der WordPress Sourcecode:
<?php $wert = apply_filters('beispiel_filter', 'filter mich', 'parameter1', 'parameter2'); ?>
Ich kann also den Inhalt „filter mich“ mit dem Filter „beispiel_filter“ ändern und dazu die Parameter „parameter1“ und „parameter2“ für meine eigene Funktion verwenden, aber nur der Inhalt „filter mich“ kann geändert und zurückgegeben werden.
Daher: „parameter1“ und „parameter2“ können nicht zurückgegeben werden, diese dienen nur der Unterstützung für die eigenen Funktion.
Im Falle des oben angeführten Filters „the_title“ könnte ich nun mit Hilfe der übergebenen ID überprüfen, ob der Post in einer bestimmten Kategorie ist und dem Titel den Kategorienamen anhängen (zb für SEO Zwecke). Die ID unterstützt nur!
http://codex.wordpress.org/Function_Reference/add_filter
http://codex.wordpress.org/Function_Reference/apply_filters