在WordPress中,有时我们希望限制某些用户角色访问后台,以增强网站管理的安全性。以下是一种实现方法:
首先,如果你想仅允许管理员、编辑和作者访问WordPress后台,可以在当前主题的functions.php文件中添加以下代码:
“`php
add_Action( ‘init’, ‘zm_redirect_WP_admin’ );
function zm_redirect_WP_admin() {
if ( is_admin() && is_user_logged_in() &&
!current_user_can(‘manage_options’) &&
!current_user_can(‘publish_pages’) &&
!current_user_can(‘publish_posts’) &&
!(defined(‘DOING_AJAX’) && DOING_AJAX) ) {
wp_safe_redirect( home_url() );
exit();
}
}
“`
这段代码会检查用户是否已登录及他们的角色,如果不符合管理员、编辑或作者的角色,系统将自动重定向至首页。若需将用户重定向到特定页面(如用户中心),可修改第4行代码,例如:
“`php
wp_safe_redirect( ‘https://xingkongWeb.com/’ );
“`
但请注意,此处的链接必须是站内的。
如果只想允许管理员访问后台,只需移除允许编辑和作者的部分,即:
“`php
!current_user_can(‘publish_pages’) &&
!current_user_can(‘publish_posts’)
“`
其次,如果你想阻止默认注册用户角色访问后台,可以在functions.php中添加以下代码:
“`php
add_action( ‘init’, ‘restrict_default_role_admin_access’ );
function restrict_default_role_admin_access() {
if ( is_admin() && !(defined(‘DOING_AJAX’) && DOING_AJAX) ) {
$current_user = wp_get_current_user();
if ( $current_user->roles[0] === get_option(‘default_role’) ) {
wp_safe_redirect( home_url() );
exit();
}
}
}
“`
这里会检查新注册用户的默认角色。然而,此规则不会影响之前已注册并分配了其他角色的用户。