Was ist "all" in isset ($ wp_filter ['all'])

10

Ich bin ein Neuling in WordPress. Ich versuche zu verstehen, wie die XHTML-Seiten generiert werden. Ich denke, es ist die Funktion von do_action( 'hook-name' ), aber ich bin isset( $wp_filter['all] )beim Lesen der Funktion do_action beim Verständnis der Anweisung festgefahren, weil ich nicht verstehe, was die Bedeutung des Wortes ist all.

Ist es eine PHP-Funktion oder eine WordPress-Funktion?

nguyen mc
quelle

Antworten:

9

allist nur eine Zeichenfolge, die die WordPress-Entwickler ausgewählt haben, um sich anders zu verhalten als jeder andere Hook. Wenn Sie eine Verbindung herstellen all, wird Ihr Rückruf für alle anderen Hooks ausgelöst .

Ich würde nicht zu viel Zeit damit verbringen , an der Quelle suchen do_action, weiß nur , dass:

  1. add_action( 'x', 'whatever' )wird whateverFeuer für bedeutendo_action( 'x' )
  2. add_action( 'all', 'whatever' )bedeutet whateverFeuer für jeden do_action , unabhängig vom Namen des Hakens.
TheDeadMedic
quelle
5

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_arrayeinzelnes 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).

Geben Sie hier die Bildbeschreibung ein

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_filterin 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_hooksda dieser Name nicht verwendet wird. Wenn wir jedoch in die Geschichte zurückkehren, werden wir feststellen, dass dies do_actionseit @since 1.2.0und apply_filtersist @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.

Prosti
quelle