如果您只是在插件文件中这样写,那么该检查将被过早调用:
if ( current_user_can( \'add_movies\' ) ) {
add_action( \'admin_bar_menu\', \'wpse17689_admin_bar_menu\' );
}
function wpse17689_admin_bar_menu( &$wp_admin_bar )
{
$wp_admin_bar->add_menu( /* ... */ );
}
因为它将在加载插件时执行,这是启动过程的早期阶段。
您应该做的是始终添加操作,但在回调中检查current_user_can()
. 如果无法执行该操作,只需返回而不添加菜单项即可。
add_action( \'admin_bar_menu\', \'wpse17689_admin_bar_menu\' );
function wpse17689_admin_bar_menu( &$wp_admin_bar )
{
if ( ! current_user_can( \'add_movies\' ) ) {
return;
}
$wp_admin_bar->add_menu( /* ... */ );
}