isset($ wp_filter ['all'])の「すべて」とは


10

私はWordPressの初心者です。XHTMLページを生成する方法を理解しようとしています。それはの関数だと思いますがdo_action( 'hook-name' )isset( $wp_filter['all] )do_action関数を読んだとき、その言葉の意味がわからないので、命令の理解に行き詰まっていallます。

PHPの機能ですか、それともWordPressの機能ですか?

回答:


9

allWordPress開発者が他のフックとは異なる動作をするように選択した文字列です。にアタッチするとall他のすべてのフックに対してコールバックが発生します

のソースを確認するのにあまり時間をかけませんdo_action。ただ、次のことを知っておいてください。

  1. add_action( 'x', 'whatever' )whatever火災を意味しますdo_action( 'x' )
  2. add_action( 'all', 'whatever' )フックの名前に関係なく、毎回のwhatever起動を意味します。 do_action

5

条件付きif ( isset($wp_filter['all']) ) {で、これらのフック作成関数で見つけることができます:

  • apply_filters
  • apply_filters_ref_array
  • do_action
  • do_action_ref_array

これらの違いは、送信される引数の数です。複数の引数、つまりref_array単一の引数が必要です。もう1つの違い「アクションとフィルタ」は単純で、アクションは任意の関数/アクションを実行できます。フィルタ名は通常、文字列データを取得し、そのデータをフィルタリングして返す関数用に予約されています。

OK、これらはあなたがフックを作成する方法です。また、フックには名前があり、同じフック名(read:タグ)で複数の関数名を釣り上げることができます。

ここに画像の説明を入力してください

ただし、特定のフックに関連付けられているすべての関数を定義したら、すべてのフック名と関連付けられている関数名をどこかに保存する必要があります。これがglobal $wp_filter、WordPress を使用する理由です。その変数を出力すると、次のようになります...

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
                        )

                )

        )

さて、この変数の名前については議論しません。個人的には$wp_hooks、この名前はとられていないので、私はそれを別の名前で呼ぶと思います。しかし、我々は戻って歴史の中で取得する場合、我々はわかりますdo_actionので、ある@since 1.2.0apply_filtersある@since 0.71(6月9日、2003年リリース)。それはなぜそれが呼ばれるのかをかなりよく説明してい$wp_filterます。WordPressで最初にフィルターが導入されたため、最も可能性が高いです。後に彼らは行動を導入した。

@TheDeadMedicから言われたことに基づいて構築しています...

add_action( 'all'、 'whatever')は、フックの名前に関係なく、すべてのdo_actionに対して何が起動しても意味します。

なぜ必要なの$wp_filter['all']かという質問をしました。ほんの数例。イントロスペクション、テスト、および将来のWordPressバージョンでのシステム内部機能のより多くの可能性。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.