¿Cómo iniciar sesión y configurar el usuario actual en WordPress con PHP?

2 minutos de lectura

estoy desarrollando un inicio de sesión / registro personalizado de wordpress. He intentado casi todo lo que he visto en la red, pero nada parece funcionar cuando intento configurar el usuario actual.

He simplificado el código en un script para que quede más claro:

Esto ha sido copiado del ejemplo de wp docs:

https://codex.wordpress.org/Function_Reference/wp_set_current_user

<?php


include_once($_SERVER['DOCUMENT_ROOT']."/wp-config.php");
include_once($_SERVER['DOCUMENT_ROOT']."/wp-includes/registration.php");
include_once($_SERVER['DOCUMENT_ROOT']."/wp-includes/user.php");
include_once ($_SERVER['DOCUMENT_ROOT']."https://stackoverflow.com/"."db_connect.php");


$user_id = 8;
$user = get_user_by( 'id', $user_id ); 

if( $user ) {

    $curr_user= wp_set_current_user( $user_id, $user->user_login );
    print_r($curr_user); // This trace is showed below.
    wp_set_auth_cookie( $user_id );

    do_action( 'wp_login', $user->user_login );
}



?>

Aquí muestro el rastro que parece que todo funciona como se esperaba:

 WP_User Object ( [data] => stdClass Object ( [ID] => 8 [user_login] => email [user_pass] => **********************. [user_nicename] => email [user_email] => [email protected] [user_url] => [user_registered] => 2015-05-06 11:23:13 [user_activation_key] => [user_status] => 0 [display_name] => username ) [ID] => 8 [caps] => Array ( [subscriber] => 1 [bbp_participant] => 1 ) [cap_key] => wp_capabilities [roles] => Array ( [0] => subscriber [1] => bbp_participant ) [allcaps] => Array ( [read] => 1 [level_0] => 1 [spectate] => 1 [participate] => 1 [read_private_forums] => 1 [publish_topics] => 1 [edit_topics] => 1 [publish_replies] => 1 [edit_replies] => 1 [assign_topic_tags] => 1 [subscriber] => 1 [bbp_participant] => 1 ) [filter] => ) 

De todos modos, cuando vuelvo al wp_site No estoy conectado_. ¿Algunas ideas?

Gracias.

  • ¿Estás construyendo un complemento de wordpress?

    – sarath

    11 de junio de 2015 a las 8:24

  • Es wp_set_auth_cookie( $user_id ); trabajando como esperas?

    – rnevio

    11 de junio de 2015 a las 8:27

  • @sarath No realmente, algo más simple, necesito iniciar sesión para mis usuarios desde un formulario que debe ser diferente al inicio de sesión de wp predeterminado, pero no hacerlo de la manera del complemento.

    – Buendiadas

    11 de junio de 2015 a las 8:28

  • ¿Estás seguro de que tienes un usuario con id 8?

    – sarath

    11 de junio de 2015 a las 8:36

  • @satath Sí, (supongo que si no, el seguimiento sería un error) 🙁

    – Buendiadas

    11 de junio de 2015 a las 8:37

Prueba este código

$user_id = 8;
$user = get_user_by( 'id', $user_id ); 

if( $user ) {

    $curr_user=  new WP_User( $user_id , $user->user_login ); 
   // print_r($curr_user); // This trace is showed below.
    wp_set_auth_cookie( $user_id );
    do_action( 'wp_login', $user->user_login );
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad