web-dev-qa-db-ja.com

user_statusがゼロの場合、ログインを停止します

新しいユーザーを拒否または承認するための簡単な承認ユーザープラグインを作成しようとしているので、デフォルトのuser_statusを使用してセッションを保存し、エラーメッセージを追加する方法、 そんな感じ

if($user_status == '0'){
   //stop login sessiong
   echo $error_msg.'waiting for approval';
}else{
  //run session
}

それをするためにとにかくありますか

1
Mouner Mostafa

user_statusフィールドはコアでは使用されないので、あなたはそれをあなた自身の目的のために使用することができます。 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 );
3
Nathan Johnson