wp_signon () no autentica la guía del usuario necesaria

4

Utilizo el formulario para enviar una solicitud POST a una página e iniciar sesión con wp_signon() para autenticar al usuario en mi instalación de wordpress como se describe en la documentación de WP:

$creds = array();
$creds['user_login'] = $_POST["user-login"];
$creds['user_password'] = $_POST["user-password"];
$creds['remember'] = true;

$user = wp_signon( $creds, false );

Después de este pequeño fragmento de código, estoy comprobando si el usuario inició sesión:

if ( is_user_logged_in() ) { echo "SUCCESS"; } else { echo "FAIL!"; }

Pero tengo FAIL! todo el tiempo. Luego, después de husmear, encontré este pequeño truco:

wp_set_current_user( $user );
if ( is_user_logged_in() ) { echo "SUCCESS"; } else { echo "FAIL!"; }

Tengo SUCCESS en este caso pero cuando salgo de esta página recibo FAIL una y otra vez.

¿Alguien me puede explicar cómo iniciar sesión como usuario con wp_signon() sin cerrar sesión después de que se cambie o vuelva a cargar la página o lo que sea.

Tengo un resultado deseable cuando voy a /wp_admin e inicio sesión con el formulario de inicio de sesión predeterminado de WP. Puedo navegar a través de cada página de mi sitio WP permaneciendo conectado todo el tiempo. Pero cuando trato de hacer esto fuera del formulario predeterminado, I FAIL .

Guíame! POR FAVOR!

    
pregunta LoomyBear 24.09.2013 - 19:40

1 respuesta

4

finalmente, esto me está funcionando en mi instalación de WP local después de reemplazar - con _ del nombre del atributo de entrada y usando las etiquetas de inicio php completas <?php en lugar de <? , el código final está aquí para copiar y pegar en su plantilla.

<?php if ( isset($_POST["user_email"]) && isset($_POST["user_password"]) ) {

$user_login     = esc_attr($_POST["user_email"]);
$user_password  = esc_attr($_POST["user_password"]);
$user_email     = esc_attr($_POST["user_email"]);

$user_data = array(
    'user_login'    =>      $user_login,
    'user_pass'     =>      $user_password,
    'user_email'    =>      $user_email,
    'role'          =>      'student'
);

// Inserting new user to the db
//wp_insert_user( $user_data );

$creds = array();
$creds['user_login'] = $user_login;
$creds['user_password'] = $user_password;
$creds['remember'] = true;

$user = wp_signon( $creds, false );

$userID = $user->ID;

wp_set_current_user( $userID, $user_login );
wp_set_auth_cookie( $userID, true, false );
do_action( 'wp_login', $user_login );

}

if ( is_user_logged_in() ) : echo 'SUCCESS'; ?>
<h1>Html for logged in user </h1>
<?php else : echo 'FAIL!'; ?>
<form id="user-credentials" method="post" action="<?php the_permalink(); ?>">
    <p><input name="user_email" type="text" placeholder="Email" /></p>
    <p><input name="user_password" type="password" placeholder="Password" /></p>
    <p><input type="submit" class="button blue size-s" value="Submit" /></p>
</form>
<?php endif; ?>
    
respondido por el Anjum 24.09.2013 - 21:52

Lea otras preguntas en las etiquetas