web-dev-qa-db-ja.com

initフックから他のフックを呼び出せませんでした

この質問に関連して( 他のフックを呼び出すにはwp init hook? )を使用してくださいが、同じではありません。

Initフックの内側に配置すると、フックが実行されないことが時々ありました。

うまくいかない:

add_action('init','my_init');
function my_init() {
    add_filter('locale', ...
}

作業:

add_action('init','my_init');
add_filter('locale', ...

もちろん、いくつかのフック/フィルタはinitフックの中でうまく動作するでしょうが、それらすべてではないことは間違いありません。

それでアクション/フィルタを一緒にチェーンするのは悪い習慣だと私には思えますか?

1
Yoga

localeフックはinitよりずっと前に発生します。どのフック、変数、定数、関数、クラス、またはファイルがいつ利用可能かを確認するには、私のプラグインをインストールしてください T5 WP Load Order .

あなたは非常に詳細なログを持つlooongファイルを入手します。 Hook: localeを検索し、次にHook: initを検索します。フックをチェインしたい場合は、親アクションとしてplugins_loadedが必要であることがわかります。

それは良い習慣ですか?場合によります。最初のコールバックが成功したときにのみ2番目のコールバックが必要な場合は、yesになります。両方のコールバックが互いに独立して実行される場合は、noになります。
連鎖はあなたのプログラムの論理を反映するべきです。

4
fuxia

別のフックのコールバックの内側にあるフックに接続することは悪い習慣ではありません、それとは反対に、時にはそれは必須です。問題は、最初のアクションの後に何か他のものを実行している間にアクションを呼び出そうとする可能性があるため、アクションとフィルタの順序に注意する必要があることですイベント)。

2
Mario Peshev