• Hola, buenas.

    Soy nuevo en el foro, así que ruego disculpen si no procedo con toda la corrección que pretendo.

    Estoy usando un plugin llamado «Peter´s Login Redirect» para redirigir a los usuarios a una página en concreto al hacer login en WordPress.

    (En dicho plugin, se indica el nombre de usuario y las direcciones del «Login URL» y «Logout URL»)

    Mi problema, es que quiero acceder a una página escrita en PHP dentro del directorio «wp-content/themes/twentyseventeen/» pasándole un parámetro, en este caso la id del usuario que se ha «logueado»

    La idea es ver en esa página un listado sacado de la BBDD filtrando el SQL por la id de usuario.

    He visto que en el propio plugin indica lo siguiente: «Ten en cuenta que usando la sintaxis [variable]usuario[/variable] en la url, el sistema creará una URL dináimca sobre cada registro, reemplazando ese texto en el nombre de usuario.»

    Cabe mencionar que sin paso de parámetro el plugin funciona correctamente.

    He probado varias combinaciones en el campo «Login URL» del tipo «/Pruebas/wp-content/themes/twentyseventeen/listado.php?id=[variable]$current_user->user_login[/variable]», y lo que hace es que me redirige correctamente a esa dirección, pero no veo nada en el parámetro id.

    Es decir, aunque me redirecciona a esa página correctamente, en la barra de direcciones del navegador sólo veo lo siguiente: «/Pruebas/wp-content/themes/twentyseventeen/listado.php?id=»

    He probado diversas variaciones de ese tipo, sin éxito.

    Si alguien ha tenido que hacer algo similar y lo ha conseguido, le agradecería que me explicase cómo.

    Muchas gracias por anticipado.

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Hola @dlozano76 no he prrobado dicho plugin, pero por lo indicas si no he entendido mal al llevarlo a tu página listado.php quieres sacar unos datos en base a su id, ¿correcto?, en dicha página al estar en WordPress ya tienes los datos del usuario sin necesidad de recibirlos por url, de hecho sería un fallo de seguridad ya que con listado.php?id=1 por ejemplo accedería a los datos de otros usuario ¿quizás el admin?

    Si la página está en WordPress tienes el Id de usuario en $user->ID puedes ver todos los datos del usuario con un

    echo '<pre>';
    print_r( $user );
    echo '</pre>';

    Si la página la has hecho «de cero» sin pertenecer a la estructura de WP, deberás añadirle al inicio del archivo:

    define( 'WP_USE_THEMES', false );
    require_once( '../../../wp-load.php' );

    Bajando el número de directorios necesario hasta el raíz de WP.

    Saludos.

    • Esta respuesta fue modificada hace 6 años, 10 meses por Carlos Longarela. Razón: recolocar código
    Iniciador del debate dlozano76

    (@dlozano76)

    Muchas gracias, Carlos, he conseguido una solución distinta, aunque satisfactoria de un modo muy similar al que me indicas.

    En el plugin, en el campo “Login URL” apunto a una nueva página (llamada, por ejemplo, «landing.php»)

    En esta página, recojo el nombre de usuario y con el hago una consulta sobre su id. Una vez tengo esa id, hago un redireccionamiento a la página que quiero pasándole ese parámetro.
    <?
    require_once(‘../../../wp-load.php’);
    global $wpdb;
    global $current_user;
    get_currentuserinfo();

    //Guardamos el nombre del usuario en una variable
    $usuario_wp = esc_attr($current_user->user_login);

    //Obtengo el id de usuario
    $consulta = «SELECT id_usuario FROM iisa_usuarios_centros_coste WHERE id_usuario = (SELECT user_nicename FROM wp_users WHERE user_login = ‘$usuario_wp’)»;

    $registros = $wpdb->get_results($consulta);

    $id_usuario = $registros[0]->id_usuario;

    //Redirijo la página con el parámetro cargado de forma transparente para el usuario
    header(«Location:/Pruebas_WORDPRESS/wp-content/themes/twentyseventeen/centros_coste.php?id=$id_usuario»);
    ?>

    Aunque no la veo la solución óptima ni mucho menos es «elegante», por el momento me sirve, ya que funciona bien y de modo transparente para el usuario

    • Esta respuesta fue modificada hace 6 años, 10 meses por dlozano76.

    Me alegro que te valiese la solución, aunque no sé por qué no recuperas directamente el id de usuario en centros_coste.php apuntando a esta página desde el plugin y en vez de sacar el usuario de GET['id'] recuperarlo de get_current_user_id() https://developer.wordpress.org/reference/functions/get_current_user_id/ ahorrándote una consulta a la BD y una redirección.

    Pero si funciona así genial 😉

    Saludos.

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘Pasar parámetros en la URL usando «Peter´s Login Redirect»’ está cerrado a nuevas respuestas.