wp_signon restituisce l'utente, ma l'utente non è connesso
Uso wp_signon()
e restituisce un utente, non un errore. Tuttavia quando eseguo is_user_logged_in()
restituisce false.
Un aiuto sarebbe molto apprezzato :)

get_currentuserinfo() non ha funzionato per me. Ho scritto riguardo a questo problema e la soluzione sul mio blog:
http://blog.rhysgoodwin.com/programming/wordpress-wp_signon-current_user-is-not-populated/
Saluti, Rhys

Questo mi è stato davvero d'aiuto. Nel caso il blog vada perso, ha detto di usare wp_set_current_user()
dopo wp_signon()
.

È possibile replicare l'utente che ha effettuato l'accesso tramite il modulo di login. Vorrei che l'utente rimanesse connesso, come con un normale accesso.

Ho avuto lo stesso problema. Ecco lo snippet completo funzionante che ha risolto il 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;
Anche wp_logout()
ha lo stesso problema. Ecco come farlo funzionare anche in questo caso:
wp_logout();
wp_set_current_user(0);

//la funzione wp_signon è ancora in fase di sviluppo, se apri i file core di WordPress
//troverai questo commento
// TODO dovremmo deprecare l'azione wp_authentication?
//ho trovato una soluzione
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);
}
//poi dovresti chiamarla in questo modo
//prima di get_header() o di qualsiasi html
login_after_register($_POST['r_user_name'],$_POST['r_password']);
