如果USER_STATUS等于零则停止登录

时间:2018-02-12 作者:Mouner Mostafa

我正在尝试创建简单的approval users插件来denay或approve新用户,因此我使用默认的user\\u状态来实现这一点,我要问的是,如果user\\u status=0,如何停止登录表单以保存会话并添加错误消息,类似这样的情况

if($user_status == \'0\'){
   //stop login sessiong
   echo $error_msg.\'waiting for approval\';
}else{
  //run session
}
有什么办法吗

1 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

这个user_status 字段不由core使用,所以您可以出于自己的目的使用它。虽然如果WP决定将来再使用它,可能会有副作用。

这个authenticate 筛选器在对用户进行身份验证之前激发。您可以挂接到该筛选器并返回WP_Error 对象以阻止用户登录。

function wpse_293904_authenticate( $user, $username, $password ) {
  $user_status = get_custom_user_status_from_username( $username );
  if( ! $user_status ) {
    $error = new WP_Error();
    $error->add( 403, \'Oops. Some error message.\' );
    return $error;
  }
  return $user;
}
add_filter( \'authenticate\', \'wpse_293904_authenticate\', 20, 3 );

结束

相关推荐

LOGIN_MESSAGE过滤器不工作

用户需要通过单击电子邮件发送的链接来验证其电子邮件。链接如下:http://www.example.com/wp-login.php?token=afdsDEDFdfsSE234&user_id=13 我用过wp_authenticate 钩子以验证用户的令牌:add_action( \'wp_authenticate\', array($this, \'verify_token\'), 30, 2); 和回调函数:public function verify_token()&