很抱歉反应太晚,但直到今天我遇到了一个情况,我才真正明白这一切。
最后,我在mu插件目录中添加了以下功能,当非管理员意外点击某些他们不应该在的页面时,该功能会将非管理员重定向到仪表板。
function wp_admin_pages_redirect_to() {
global $pagenow;
$admin_pages = array(
\'themes.php\',
\'edit-tags.php?taxonomy=post_tag\',
\'options-general.php\',
);
if(in_array($pagenow, $admin_pages)) {
wp_redirect( admin_url(\'/\') ); exit;
}
}
if( !current_user_can(\'administrator\') ) {
add_action(\'admin_init\', \'wp_admin_pages_redirect_to\');
}
然而,这会给我一个白色的死亡屏幕。因此,在阅读了@Rilwis的评论后,我尝试了以下方法,效果很好。
function wp_admin_pages_redirect_to() {
if( !current_user_can(\'administrator\') ) {
global $pagenow;
$admin_pages = array(
\'themes.php\',
\'edit-tags.php?taxonomy=post_tag\',
\'options-general.php\',
);
if(in_array($pagenow, $admin_pages)) {
wp_redirect( admin_url(\'/\') ); exit;
}
}
}
add_action(\'admin_init\', \'wp_admin_pages_redirect_to\');
无论如何,读到@Rilwis对Brads建议的评论,我终于(有点)意识到了@t f所说的是什么,以及某些条件是如何在函数之外无法评估的。我希望这就是他所说的。