wp_signon devuelve usuario, pero el usuario no está conectado

4 nov 2010, 12:38:08
Vistas: 25.8K
Votos: 8

Uso wp_signon() y devuelve un usuario, no un error. Sin embargo, cuando ejecuto is_user_logged_in() devuelve falso.

Agradecería mucho la ayuda :)

0
Todas las respuestas a la pregunta 5
3

get_currentuserinfo() no funcionó para mí. He escrito sobre este problema y su solución en mi blog:

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

Saludos, Rhys

28 dic 2010 00:24:56
Comentarios

Esto realmente ayudó. En caso de que el blog desaparezca, dijo que hay que usar wp_set_current_user() después de wp_signon().

d79 d79
15 oct 2015 20:14:11

Funcionó para mí, hermano.

User User
25 jul 2018 09:37:56

get_currentuserinfo() ahora está obsoleto, sin embargo wp_get_current_user() funciona para mí.

mistertaylor mistertaylor
2 mar 2019 00:52:33
2

Después de usar wp_signon(), la información del usuario no se establece, que es cómo WP verifica un usuario en is_user_logged_in(). Debería ser solo cuestión de llamar a get_currentuserinfo() después de wp_signon().

4 nov 2010 15:51:56
Comentarios

¿Es posible replicar que el usuario haya iniciado sesión a través del formulario de inicio de sesión? Me gustaría que el usuario permanezca conectado, como con un inicio de sesión normal.

User User
4 nov 2010 16:13:24

prueba $creds = array(); $creds['user_login'] = $user_login; $creds['user_password'] = $user_pass; $creds['remember'] = true; $user = wp_signon( $creds, false ); para recordar al usuario

Philip Seyfi Philip Seyfi
17 nov 2011 21:49:58
0

Tuve el mismo problema. Aquí el fragmento de código completo que solucionó ese problema:

    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;

También wp_logout() tiene el mismo problema. Así es como hacer que funcione también:

wp_logout();  
wp_set_current_user(0);
24 may 2013 17:16:56
1
//la función wp_signon está en construcción aún, si abres los archivos núcleo de WordPress
//encontrarás este comentario

// TODO ¿deprecamos la acción wp_authentication?

//encontré una solución
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);
}
//luego deberías llamarla de esta forma
//antes de get_header() o cualquier html
login_after_register($_POST['r_user_name'],$_POST['r_password']);
27 may 2013 00:35:47
Comentarios

Si esto se supone que es una respuesta, necesita alguna explicación. Por favor, actualiza tu respuesta.

fuxia fuxia
27 may 2013 00:41:32
0

Solo establece el segundo parámetro como true. Establecerlo como false evitará que wp_signon() configure la cookie segura, la cual es esencial para acceder a wp-admin.

$user = wp_signon( $credentials, true );
14 jun 2021 13:30:23