回答:
all
WordPress開発者が他のフックとは異なる動作をするように選択した文字列です。にアタッチするとall
、他のすべてのフックに対してコールバックが発生します。
のソースを確認するのにあまり時間をかけませんdo_action
。ただ、次のことを知っておいてください。
add_action( 'x', 'whatever' )
のwhatever
火災を意味しますdo_action( 'x' )
add_action( 'all', 'whatever' )
フックの名前に関係なく、毎回のwhatever
起動を意味します。 do_action
条件付き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.0
とapply_filters
ある@since 0.71
(6月9日、2003年リリース)。それはなぜそれが呼ばれるのかをかなりよく説明してい$wp_filter
ます。WordPressで最初にフィルターが導入されたため、最も可能性が高いです。後に彼らは行動を導入した。
@TheDeadMedicから言われたことに基づいて構築しています...
add_action( 'all'、 'whatever')は、フックの名前に関係なく、すべてのdo_actionに対して何が起動しても意味します。
なぜ必要なの$wp_filter['all']
かという質問をしました。ほんの数例。イントロスペクション、テスト、および将来のWordPressバージョンでのシステム内部機能のより多くの可能性。