有越来越多的朋友开始为WordPress添加用户中心,来增加网站的功能,留住更多的用户,对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 页面,用户直接访问 wp-login.php 还是可以访问默认登录注册页面的,知道的朋友可以在评论里面给大家分享一下。
关于 "WordPress 自定义注册登录以及登陆后跳转到前端自定义用户中心 "的一个想法
改进版,去掉写死的域名