WordPress 自定义注册登录以及登陆后跳转到前端自定义用户中心

文 / @UTHEME

关于开发WordPress用户中心的问题:

越来越多的WordPress用户开始添加用户中心,以增加网站功能并留住更多用户。对于高级用户而言,这可能并不是问题,但对于新手来说,开发创建前端用户中心的任务可能有些棘手。下面是我对开发WordPress用户中心过程中遇到的一些常见问题的总结,供有前端用户中心开发需求的读者参考。

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

有了前端用户中心,非管理员用户就没必要访问默认的仪表盘了,应该直接跳转到前端用户中心。为此,我们可以采用以下代码实现:

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后台基本上就已经对用户隐藏了。但还有一个问题需要解决——如何隐藏wp-login.php页面,使用户无法直接访问默认的登录注册页面?如果你知道解决方法,欢迎在评论区里分享。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。