web-dev-qa-db-ja.com

プラグインとテーマの両方が同じフックを使用する場合、どちらのフックコールバックが優先されますか?

テーマとプラグインが同じアクションフックを使用する場合、例えばcomment_formはテーマとプラグインの両方で使用されます。では、どちらが先に呼ばれるのでしょうか。テーマのフックに関連付けられている関数、またはプラグインのフックに関連付けられている関数。

1
Adi

アクションフックは、単純にキューポイント動作しますPHP実行プロセスの特定のポイントで:コールバックはadd_action()呼び出しを介してキューに入れられます、およびキュー内のすべてが順番に処理されます。

add_action( 'hook_name', 'callback_name', $priority, $number_of_args );

フィルターフックは、同様のキューポイントであり、それだけが機能します特定のデータビットに対して-文字列、配列、整数、その​​他何でもかまいません。アクションと同様に、コールバックはadd_filter()呼び出しを介してキューに入れられ、キュー内のすべてが順番に処理されます。

add_filter( 'hook_name', 'callback_name', $priority, $number_of_args );

1つのコールバックが別のコールバックよりも早くまたは遅く処理されるようにする必要がある場合、2つのコールバックが異なるprioritiesを持っていることを確認する必要があります。 下位数値、上位優先順位、および初期実行。デフォルトの優先度は10であるため、優先度11で追加されたものはすべて実行されますafterデフォルト、および9の優先度で追加されたものはすべて実行されます- beforeデフォルト。

そのため、はい:テーマandプラグインは、競合することなく、同じアクション/フィルターフックにアクションまたはフィルターコールバックを追加できます。

4
Chip Bennett

すべてのaction/filterフックには優先度パラメータがあります(3番目のパラメータ)。デフォルト値は10です。値が小さいほど、早く呼び出されます。

好き

add_action( $tag, $function_to_add, $priority, $accepted_args );

add_filter( $tag, $function_to_add, $priority, $accepted_args );

1
Maruti Mohanty