Was macht apply_filters (…) eigentlich in WordPress?

122

Ich versuche, einige der Funktionen in WordPress zu verstehen, aber ich kann mir nicht vorstellen, was apply_filters (...) tatsächlich tut.

Kann mir das jemand mit ein paar Beispielen klären?

Tim
quelle
12
Genial
Nabil Kadimi
Ein Hinweis, der apply_filters()ein unglaublich irreführender Name für die Funktion ist, da er sowohl Filter als auch Aktionen anwendet, die mit der Zielfunktion
verknüpft sind
@NabilKadimi, großartiger Vorschlag, dev.themeblvd.com/tutorial/filters/#highlighter_604585 , aber wenn diese Funktion keine Argumente akzeptiert (bitte klicken Sie auf den Link, um zu sehen, über welche Funktion ich spreche), wie wird die $ output-Variable geändert? , wie er in seinem nächsten Codeabschnitt beschreibt?
Ramesh Pareek
@RameshPareek Ihr Link scheint nicht wie erwartet zu funktionieren, verwenden Sie bitte einen Github-Kern.
Nabil Kadimi
Es tut uns leid! Bitte scrollen Sie nach unten zu Beispiel 1: Die Grundlagen auf dieser Seite.
Ramesh Pareek

Antworten:

104

apply_filters($tag, $value)Übergibt das Argument 'value' an jede der Funktionen 'hooked' (using add_filter) in das angegebene Filter 'tag'. Jede Funktion führt eine Verarbeitung des Werts durch und gibt einen geänderten Wert zurück, der an die nächste Funktion in der Sequenz übergeben wird.

Beispielsweise the_contentleitet der Filter standardmäßig (in WordPress 2.9) den Wert durch die folgende Funktionssequenz:

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode
Richard M.
quelle
apply_filters($value)
Denken
32

späte Antwort

Kurze Erklärung

apply_filters()interagiert mit dem global $wp_filtersArray. Grundsätzlich prüft es nur das Array, ob dem aktuellen Filter (oder Hook) eine Aktion (/ Rückruffunktion) zugeordnet ist, und ruft sie dann auf.

Lange Erklärung

Wenn Sie einen Rückruf / eine Aktion an einen Filter oder Hook anhängen, fügen Sie einfach den Rückrufnamen zum globalen Filterarray hinzu. Wenn dann im Code (z. B. eine Vorlage, ein Kern oder eine Plugin-Datei) ein Aufruf do_action()oder eine apply_filters()Meldung erfolgt, durchsucht WordPress das Array und ruft den Rückruf auf. Das einzige Besondere an Filtern als an Hooks ist, dass sie den Wert (zur weiteren Behandlung) zurückgeben, anstatt nur den Rückruf auszulösen. Zusammenfassend: Hooks dienen zum Einfügen von Daten, Filter zum Ändern von Daten.

Kaiser
quelle
19

Folgendes sehe ich, wenn ich die beliebteste Antwort und zusätzliche Ressourcen betrachte:

  • $ tag scheint ein Synonym für den Namen des Hooks zu sein. (Das ist für mich nicht besonders intuitiv.)
  • the_content ist ein Beispiel für einen Hook vom Typ "filter".
  • Der_content-Hook besteht aus mehreren Filtern.
  • Filter ändern Daten. Sie filtern im Grunde die Datenbank und ändern die Daten, bevor die Benutzer sie anzeigen.
  • Eine häufige Verwendung von apply_filters () ist beispielsweise das Anwenden der_content-Filter auf $ content. In diesem Fall werden doppelte Rückgaben in <p>Tags, Smileys in Symbole usw. konvertiert.
  • "the_content" ist ein Hook, während "the_content ()" eine Funktion ist.
Marjorie Roswell
quelle
1

In den grundlegendsten Begriffen wird apply_filters verwendet, um einen Filter-Hook zu initialisieren ... add_filter weist bereits erstellten Hooks eine neue Funktion zu.

Steve
quelle
3
Dies ist leider falsch: apply_filters () ruft die bereits initialisierten Filter-Hooks auf und add_filter () ist der Aufruf, der einen Filter-Hook erstellt. Ich weiß, dass Sie das tatsächlich so gemeint haben, aber Sie haben die Funktionen falsch herum!
Brian C
apply_filters ($ tag, $ value); Mit dieser Option können Sie eine Stelle in Ihrem Code erstellen, an der Sie zulassen können, dass der übergebene $ -Wert mithilfe von add_filter () verknüpft und geändert wird.
Styledev