Bedingt if ( isset($wp_filter['all']) ) {
finden Sie direkt in diesen Hook-Erstellungsfunktionen:
apply_filters
apply_filters_ref_array
do_action
do_action_ref_array
Der Unterschied zwischen diesen besteht in der Anzahl der gesendeten Argumente. Entweder brauchen wir mehrere Argumente, also ein ref_array
einzelnes Argument. Der andere Unterschied "Aktion vs. Filter" ist einfach, Aktion kann jede Funktion / Aktion ausführen, und der Filtername ist normalerweise Funktionen vorbehalten, die Zeichenfolgendaten verwenden und diese gefilterten Daten zurückgeben.
OK, so erstellen Sie Hooks. Und Hooks haben Namen, und Sie können mehrere Funktionsnamen mit demselben Hook-Namen fischen (read: tag).
Sobald Sie jedoch alle Funktionen definiert haben, die bestimmten Hooks zugeordnet sind, müssen Sie alle Hook-Namen und zugehörigen Funktionsnamen irgendwo speichern. Deshalb haben wir das global $wp_filter
in WordPress. Wenn Sie diese Variable ausgeben, erhalten Sie so etwas wie ...
Array
(
[pre_term_name] => Array
(
[10] => Array
(
[sanitize_text_field] => Array
(
[function] => sanitize_text_field
[accepted_args] => 1
)
[wp_filter_kses] => Array
(
[function] => wp_filter_kses
[accepted_args] => 1
)
)
[30] => Array
(
[_wp_specialchars] => Array
(
[function] => _wp_specialchars
[accepted_args] => 1
)
)
)
Lassen Sie uns nicht über den Namen dieser Variablen streiten. Persönlich würde ich es anders nennen, wahrscheinlich, $wp_hooks
da dieser Name nicht verwendet wird. Wenn wir jedoch in die Geschichte zurückkehren, werden wir feststellen, dass dies do_action
seit @since 1.2.0
und apply_filters
ist @since 0.71
(veröffentlicht am 9. Juni 2003.). Das gibt Ihnen eine ziemlich gute Erklärung, warum es heißt $wp_filter
. Dies ist am wahrscheinlichsten, da Filter zuerst in WordPress eingeführt wurden. Später führten sie Aktionen ein.
Bauen Sie einfach darauf auf, von @TheDeadMedic gesagt zu werden ...
add_action ('all', 'Whatever') bedeutet, was auch immer für jede do_action ausgelöst wird, unabhängig vom Namen des Hooks.
Ich habe die Frage aufgeworfen, warum wir brauchen $wp_filter['all']
? Nur ein paar Beispiele. Introspektion, Tests und wahrscheinlich mehr systeminterne Funktionen in zukünftigen WordPress-Versionen.