通常のWPコアのロード中に、現在のユーザーがセットアップされて$wp-init()
いinit
ます。テーマのロード後、フック前です。これは、機能に慣れる、init
または後で慣れるのと同じです。
ただし、それcurrent_user_can()
より前など、関連する関数を呼び出すことも一般的です。これは、ロードプロセスの初期段階で動作するプラグインに必要な定義です(私のツールバーテーマスイッチャープラグインがその例です)。
ドキュメンテーションは、(私が見つけることができた)この慣行に対する賛成も反対もしません。
ただし、一部のプラグインはユーザー関連の機能にフックしinit
、常にポスト状態を期待するようです。
たとえば、bbPressは次の通知をスローします。
// If the current user is being setup before the "init" action has fired,
// strange (and difficult to debug) role/capability issues will occur.
if ( ! did_action( 'after_setup_theme' ) ) {
_doing_it_wrong( __FUNCTION__, __( 'The current user is being initialized without using $wp->init().', 'bbpress' ), '2.3' );
}
簡単なデモンストレーションのために、これをコアの定義に入れcurrent_user_can()
ます:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
この状況で誰が「正しい」のでしょうか。以前にユーザー関連機能の許可/禁止の使用についての正式な決定はありinit
ますか?