wp_signon gibt den Benutzer zurück, der Benutzer ist jedoch nicht angemeldet

7

Ich benutze wp_signon()und es gibt einen Benutzer zurück, kein Fehler. Wenn ich es jedoch tue is_user_logged_in(), wird false zurückgegeben.

Hilfe wäre sehr dankbar :)

John P Bloch
quelle

Antworten:

4

Nach der Verwendung wp_signon()werden die Benutzerinformationen nicht festgelegt. Auf diese Weise checkt WP nach einem Benutzer ein is_user_logged_in(). Es sollte nur eine Frage der Berufung sein get_currentuserinfo()nach wp_signon().

John P Bloch
quelle
Ist es möglich, den Benutzer, der sich angemeldet hat, über das Anmeldeformular zu replizieren? Ich möchte, dass der Benutzer wie beim regulären Anmelden angemeldet bleibt.
1
versuchen Sie $creds = array(); $creds['user_login'] = $user_login; $creds['user_password'] = $user_pass; $creds['remember'] = true; $user = wp_signon( $creds, false );sich an den Benutzer zu erinnern
Philip Seyfi
4

get_currentuserinfo () hat bei mir nicht funktioniert. Ich habe in meinem Blog über dieses Problem und diese Lösung geschrieben:

http://blog.rhysgoodwin.com/programming/wordpress-wp_signon-current_user-is-not-populated/

Prost, Rhys


quelle
2
Das hat wirklich geholfen. Im Fall verloren geht das Blog, sagte er benutzen wp_set_current_user()nach wp_signon().
d79
Arbeitete für mich, Bruder.
get_currentuserinfo()ist jetzt veraltet, wp_get_current_user()funktioniert aber bei mir.
Mistertaylor
0

Ich habe das gleiche Problem gehabt. Hier das voll funktionsfähige Snippet, mit dem das Problem behoben wurde:

    if( isset($_POST['log']) && isset($_POST['pwd']) ):
      $creds = array( 'user_login' =>  $_POST['log'], 'user_password' => $_POST['pwd'], 'remember' => $_POST['rememberme'] );
      $user = wp_signon( $creds, false );
      if ( is_wp_error($user) ): echo $user->get_error_message(); endif;
      wp_set_current_user($user->ID);
      return $user;
    endif;

Hat auch wp_logout()das gleiche Problem. Hier erfahren Sie, wie es auch funktioniert:

wp_logout();  
wp_set_current_user(0);
Salvatore Dibenedetto
quelle
0
 //the function wp_signon is under construction yet if you open wordpress core files
 //you will find this comment

 // TODO do we deprecate the wp_authentication action?

 //i figured out a solution
 function login_after_register($userlogin,$userpass){
$credentials = array( 'user_login' =>  $userlogin, 'user_password' => $userpass, 'remember' => true );

$secure_cookie = is_ssl();

$secure_cookie = apply_filters('secure_signon_cookie', $secure_cookie, $credentials);
add_filter('authenticate', 'wp_authenticate_cookie', 30, 3);

$user = wp_authenticate($credentials['user_login'], $credentials['user_password']);
wp_set_auth_cookie($user->ID, $credentials["remember"], $secure_cookie);
do_action('wp_login', $user->user_login, $user);
 }
 //then you should call it this way
 //before get_header() or any html
 login_after_register($_POST['r_user_name'],$_POST['r_password']);
Ashraf Mohammed
quelle
5
Wenn dies eine Antwort sein soll, bedarf es einer Erklärung. Bitte aktualisieren Sie Ihre Antwort.
Fuxia