回答:
ワードプレスのフックはハリウッドのように機能します。あなたはそれらを呼ばず、彼らはあなたを呼びます。しかし、ハリウッドとは異なり、彼らはリストの全員に電話をかけ続けます。
アクションやフィルターが、さまざまなプラグインから、またはWordPressコアのさまざまな関数にフックされた複数の関数を持っていることは正常です。コードがより明確になり(各関数は1つのことだけを実行します)、特定の機能をアンフックすることで簡単に無効化できるため、これは可能であるだけでなく、良い習慣です。
あなたはまた、フックの優先順位と遊ぶことができることに注意してください:あなたは両方を実行する場合functionA()
とfunctionB()
でafter_setup_theme
はなく、functionA()
前に実行しなければならないfunctionB()
、あなたはフックすることができfunctionA()
、デフォルトの優先順位と10
し、functionB()
優先度で20
(または10以上の任意の他の数)。機能しないのは、アクションの実行中に別の関数をアクションにフックすることです。したがってfunctionB()
、after_setup_theme
からfunctionA()
呼び出されてにフックすることはできませんafter_setup_theme
。直接呼び出すこともできますが、個別のフックの利点は失われます。
私の提案は、可能であれば、他のすべての関数を呼び出す「マスター」関数を用意することです。そうすれば、そのアクションに1回フックするだけで済みます。
add_action( 'after_setup_theme', 'master_function' );
function master_function()
{
func_a();
func_b();
func_c();
func_d();
func_e();
}
function func_a(){ /* Do something */}
function func_b(){ /* Do something */}
function func_c(){ /* Do something */}
function func_d(){ /* Do something */}
function func_e(){ /* Do something */}
これには、後続の関数呼び出しで使用できる値を返すことができるという追加の利点があります。