it-swarm.com.de

stoppen Sie die Anmeldung, wenn user_status gleich Null ist

ich versuche, ein einfaches Plug-in für Genehmigungsbenutzer zu erstellen, um einen neuen Benutzer zu verweigern oder zu genehmigen. Daher habe ich den Standardbenutzerstatus verwendet. Ich möchte wissen, wie ich das Anmeldeformular anhalten kann, um die Sitzung zu speichern und eine Fehlermeldung hinzuzufügen, wenn user_status = 0 , sowas in der Art

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

gibt es sowieso dafür

1
Mouner Mostafa

Das Feld user_status wird von core nicht verwendet, Sie können es also für Ihre eigenen Zwecke verwenden. Obwohl es Nebenwirkungen geben kann, wenn WP sich jemals entscheidet, es in Zukunft wiederzuverwenden.

Der Filter authenticate wird ausgelöst, bevor der Benutzer authentifiziert wird. Sie können sich in diesen Filter einbinden und ein WP_Error-Objekt zurückgeben, um zu verhindern, dass sich der Benutzer anmeldet.

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