有时我们希望开放wordpress的前台用户注册功能,但是又不希望这些用户访问wordpress的后台。该怎么办呢?

方法一:非管理员访问显示提示消息

1
2
3
4
5
6
function redirect_non_admin_users() {
   if ( ! current_user_can( 'manage_options' ) ) {
       wp_die( __('对不起,你没有管理员权限!') );
   }
}
add_action( 'admin_init', 'redirect_non_admin_users', 1 );

方法二:非管理员访问重定向到主页

1
2
3
4
5
6
function redirect_non_admin_users() {
   if ( ! current_user_can( 'manage_options' )  && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {
       wp_redirect( home_url() );
   }
}
add_action( 'admin_init', 'redirect_non_admin_users', 1 );

如果你要修改用户角色,可以修改 ! current_user_can( ‘manage_options’ ),至于如何判断用户角色,请参考 WordPress Roles and Capabilities

补充:默认角色的用户无法进入后台

如果你不想让默认角色的用户进入 WordPress 后台乱逛,你可以在当前主题的 functions.php 中加入以下代码,然后使用默认角色的用户帐号登录,看是什么情况,是不是直接跳转到首页了呢?

1
2
3
4
5
6
7
if ( is_admin() ) {
 $current_user = wp_get_current_user();
 if($current_user->roles[0] == get_option('default_role')) {
   wp_safe_redirect( home_url() );
   exit();
 }
}

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。