当我们想关闭wordpress注册功能时,可以使用仪表盘
->设置
->常规
->取消勾选 任何人可以注册
的方法,但是一些wordpress主题(如DUX)提供了独立的会员中心
页面,独立实现了包括注册
、登录
、找回密码
等功能,且未判断是否在wordpress仪表盘中设置禁止注册,存在绕开注册限制的风险,下面以DUX主题为例,谈一下修复方法。
DUX主题中,如果开启了会员中心
,wordpress首页会添加登录按钮,并调用独立的登录/注册浮窗,具体代码位于action/log.php
中,贴上部分代码:
switch ($ui['action']) {
case 'signin':
if( is_user_logged_in() ) {
print_r(json_encode(array('error'=>1, 'msg'=>'你已经登录')));
exit;
}
//other code
case 'signup':
if( is_user_logged_in() ) {
print_r(json_encode(array('error'=>1, 'msg'=>'你已经登录')));
exit;
}
//other code
可以看到上面代码中针对登录
及注册
的场景中进行了一系列判断,如是否登录、用户名密码是否错误、注册时用户是否已存在等等,但是并没有在注册时针对wordpress是否关闭注册做判断,所以我们只需要在case 'signup'
下增加判断即可,这里使用wordpress内置函数get_option
判断:
switch ($ui['action']) {
case 'signin':
if( is_user_logged_in() ) {
print_r(json_encode(array('error'=>1, 'msg'=>'你已经登录')));
exit;
}
//other code
case 'signup':
if( is_user_logged_in() ) {
print_r(json_encode(array('error'=>1, 'msg'=>'你已经登录')));
exit;
}
// check if can register
if( !get_option('users_can_register') ) {
print_r(json_encode(array('error'=>1, 'msg'=>'该站点未开放注册')));
exit;
}
//other code
修改后保存即可,再次注册时即可看到浮窗中提示该站点未开放注册
了。以上以DUX主题为例,其他主题也可以寻找类似的代码处,增加条件判断就好了。
最新评论