it-swarm.com.de

Benutzer nach wp_create_user setzen?

Ich habe ein Formular, mit dem ein neuer Benutzer erstellt wird:

wp_create_user()

Das funktioniert, aber danach möchte ich mich automatisch beim Benutzer anmelden.

Ich habe versucht mit:

$creds = array();
$creds['user_login'] = 'username';
$creds['user_password'] = 'password';
$creds['remember'] = true;
$user = wp_signon( $creds, false );
    if ( is_wp_error($user) ) {
       $msg =  $user->get_error_message();
       die($msg);
    } else {
        $output_form = true;
    }

Dadurch wird jedoch die Fehlermeldung "Header bereits gesendet" angezeigt, da sie nicht oben auf der Seite angezeigt wird.

Gibt es eine Möglichkeit, sich automatisch beim Benutzer anzumelden, nachdem ich den Benutzer erstellt habe?

2
redconservatory

Hier ist eine von mir geschriebene Funktion, mit der Hooks in die Schwerkraftformulare ein Benutzerformular erstellen. Sie kann jedoch zu jedem Aktions-Hook hinzugefügt werden, an den Ihre Funktion wp_create_user angehängt ist.

function my_auto_login( $user_id ) {
    wp_set_auth_cookie( $user_id, false, is_ssl() );
    wp_redirect( admin_url( 'profile.php' ) );
    exit;
}

Der wichtige Teil ist wp_set_auth_cookie. Dies muss ausgelöst werden, nachdem der Benutzer die beste (einzige?) Möglichkeit zum automatischen Anmelden eines Benutzers ist, ohne das Anmeldeformular auszufüllen.

3
Chris_O

Sie sollten wahrscheinlich den Aktions-Hook init verwenden, um das Registrierungsformular abzufangen und zu verarbeiten. Dieser Hook wird aufgerufen, bevor etwas an den Browser gesendet wird. Wenn das Formular gültig ist ...

  • Erstelle den Benutzer mit wp_create_user
  • Melden Sie den Benutzer mit wp_signon an.
  • Leiten Sie den Benutzer mit wp_redirect auf die Seite Ihrer Wahl um
2
Chris Carson