WordPress 自定义登录后跳转到前端用户中心

有越来越多的朋友开始为 WordPress 添加用户中心,来增加网站的功能,留住更多的用户,对 WordPress 高级用户来说,这可能不是什么问题,可是对于 WordPress 新手来说,开发创建前端用户中心的任务就有点复杂了。下面我把[开发 WordPress 用户中心]过程中遇到的较多的一些问题总结一下,供有开发前端用户中心需求的朋友们参考。

只有管理员才能访问仪表盘,其他用户重定向到用户中心

有了前端用户中心,非管理员用户是没有必要访问默认的仪表盘的,登录后直接跳转到前端用户中心就可以了。
其实操作也很简单,使用文本编辑器打开当前主题目录下的functions.php,在末尾加上以下php代码:

add_action( 'admin_init', 'redirect_non_admin_users' );
function redirect_non_admin_users() {
    if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) {
        wp_redirect( site_url("/me/") ); #这里的“/me/”是前端用户中心的地址。
        exit;
    }
}

上面的代码需要注意的是“$_SERVER['PHP_SELF']”获取的是域名后面的路径地址,如果你的 WordPress 是安装在子目录的,那么前面的“/wp-admin/admin-ajax.php” 也需要把子目录的名称加上,否则 Ajax 请求会验证不通过。

只对管理员显示工具条

开发了前端用户中心,后台的所有功能当然是不希望用户看到的,可是管理工具条确实又是一个非常好用的功能,我们只需要对非管理用户隐藏工具条就可以了。

if (!current_user_can('manage_options')) {
    add_filter('show_admin_bar', '__return_false');
}

修改登录页面为自定义登陆页面

需要注意的是:不要直接把登录链接链接到前端用户中心登录页面,这样在退出用户中心的时候,注销程序会自动把页面跳转到默认的登录页面。

function wizhi_login_page( $login_url, $redirect ) {
    $new_login_url = home_url('ucenter') . '?redirect_to=' . $redirect;
    return $new_login_url;
}
add_filter( 'login_url', 'wizhi_login_page', 10, 2 );

处理完了以上几个页面之后,WordPress 后台基本上就对用户隐藏了。

推荐阅读更多精彩内容