在香草WP核心加载期间,正在设置当前用户,该用户$wp-init()
在主题加载之后,init
挂机之前。这与功能挂钩init
或以后使用的良好做法是一致的。
但是,调用相关功能(例如current_user_can()
早于此)也是一种常见的做法。从定义上讲,这是与加载过程的早期阶段兼容的插件所必需的(我的Toolbar Theme Switcher插件就是一个示例)。
文档没有主张或反对这种做法(我可以找到)。
但是,某些插件似乎可以与用户相关的功能挂起,并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' );
}
为了快速演示,将其放入core的定义中current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
在这种情况下谁是“正确的”?之前是否存在关于允许/禁止使用用户相关功能的规范决定init
?