このアプローチを使って新しいフックを追加するプラグインがたくさんあります。
add_action('init', function() {
add_action('SOME_LATER_HOOK', xxx);
add_filter('SOME_LATER_FILTER', yyy);
});
なぜ彼らは単にフックを直接追加しないのですか?とにかく何の利益もないようです。パフォーマンス
なぜじゃない
add_action('SOME_LATER_HOOK', xxx);
アクションやフィルタを追加する前に、コードを実行したいことがあります。これには、ユーザーの許可の確認、ページリクエストの種類の確認、他のプラグインがアクティブかどうかの確認などが含まれます。
これらのチェックのいくつかは、WordPressの実行を通じた何らかの方法で可能になるかもしれません - そのため、プラグインのインクルードではなく、initフックでその作業を行うのが合理的に一般的です。
このようなことをすべて行うということは、たとえあなたの行動の中にはそれを必要としないとしても、あなたの「初期化」がすべて一箇所にあることを意味します。
必要ならば、init
から1つの関数を削除するほうが、全体から2つ(おそらく50)よりも簡単です。
一般的にinit
フックの前には何も実行しないことをお勧めします。したがって、必須の技術的な意味によって強制されない場合でも、これは典型的な出発点です。
フックにフックを追加することは、私にはかなり負担が大きいようです。リソースの無駄遣いです。それを行う場合、 add_user_func_array()
を2回以上呼び出します。そうしないと、1つだけになり、その前に処理された他の作業は言うまでもありません。
例外は次のとおりです。
また、フックを「連鎖」させて、少しの柔軟性を提供することもできます 特別な目的のコードに対して 。