首先,你不应该使用current_user_can
具有角色的功能。正如Codex明确指出的那样,您应仅将功能用作参数:
虽然部分支持针对特定角色而不是功能进行检查,但不鼓励这种做法,因为它可能会产生不可靠的结果。
So, if we\'ve dealt with that major issue...
如果要禁用订阅服务器的wp admin,您必须做两件事:
1。隐藏管理栏是用户登录时显示在页面顶部的黑色栏。
您可以使用以下代码隐藏它:
function remove_admin_bar() {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
if ( in_array(\'subscriber\', $user->roles) ) {
show_admin_bar(false);
}
}
}
add_action(\'after_setup_theme\', \'remove_admin_bar\');
2。阻止wp管理员访问
function restrict_wpadmin_access() {
if ( ! defined(\'DOING_AJAX\') || ! DOING_AJAX ) {
$user = wp_get_current_user();
if ( in_array(\'subscriber\', $user->roles) ) {
wp_redirect( site_url( \'/user/\' ) ); // <- or wherever you want users to go instead
die;
}
}
}
add_action( \'admin_init\', \'restrict_wpadmin_access\' );
如果要针对不同的用户组,只需在上述两个函数中更改此行即可满足您的需要:
if ( in_array(\'subscriber\', $user->roles) ) {