¿Cómo obtener un parámetro de URL con get_query_var?

19 mar 2018, 10:27:28
Vistas: 35.8K
Votos: 4

Estoy tratando de obtener un parámetro personalizado de URL en WordPress.

Agrego el siguiente código a functions.php:

function add_query_vars_filter( $vars ){
    $vars[] = "token";
    return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );

Luego en la página web escribo:

<?php  $token = get_query_var( 'token', $default = '');  ?>
<h1>Actualmente navegando token <?php echo (int) $token; ?> En una 
página estática de inicio</h1>

y voy a la página web http://www.negovista.com/tokensuccess/?token=xxxxxx

Sin embargo, en la página solo se muestra

'Actualmente navegando token En una página estática de inicio' sin el xxxxxx

¿Alguien sabe si hay un error en el código?

8
Comentarios

No veo nada malo en tu código. ¿Has depurado el valor de la variable $token?

cybmeta cybmeta
19 mar 2018 11:10:58

En el código fuente de tu página, tanto <?php $token = get_query_var( 'token', $default = ''); ?> como <?php echo (int) $token; ?> aparecen impresos como comentarios HTML (<!--?php $token = get_query_var( 'token', $default = ''); ?--> y <!--?php echo (int) $token; ?-->). Parece haber algún error de sintaxis en tu archivo de plantilla PHP.

cybmeta cybmeta
19 mar 2018 11:22:59

¡Hola, gracias por tu respuesta! Creo que tienes razón. Estoy usando un editor front-end llamado Cornerstone y no es posible simplemente insertar código PHP dentro de él. Tendré que crear un shortcode y usarlo en su lugar.

flemmingha flemmingha
19 mar 2018 23:25:39

@cybmeta ¿Podrías explicar tu comentario en una respuesta con más detalle? Estoy teniendo el mismo problema exacto. Incluso copiando y pegando el ejemplo del WP Codex no obtengo nada. Mi código es `function rj_add_query_vars_filter( $vars ){ $vars[] = "adminoption"; return $vars; } add_filter( 'query_vars', 'rj_add_query_vars_filter' );

echo get_query_var('adminoption', "<h1>NO ESTABLECIDO</h1>");` . Mi código siempre devuelve "NO ESTABLECIDO" cuando mi consulta de URL es "sometitle/?adminoption=TEST"

user658182 user658182
15 abr 2018 18:06:49

.. además usar echo $_GET["adminoption"]; funciona bien. Puedo hacer que imprima lo que quiera. Esto está en mi archivo functions.php

user658182 user658182
15 abr 2018 18:10:12

@cybmeta ¿te refieres a mí? Si es así, entonces estás equivocado. Sí tenía las etiquetas php. El problema era que estaba usando un editor front-end llamado cornerstone que no soporta php

flemmingha flemmingha
18 abr 2018 12:16:32

No, lo siento, a @user658182,

cybmeta cybmeta
18 abr 2018 13:10:21

Ok, me confundí un poco :)

flemmingha flemmingha
18 abr 2018 13:16:43
Mostrar los 3 comentarios restantes
Todas las respuestas a la pregunta 1
1

Logré encontrar una solución con la ayuda de algunos desarrolladores en el foro apex de theme.co.

Necesitaba obtener dos cadenas de consulta de mi URL www.randompage.com/tokensuccess/?token=token&username=username llamadas token y username.

Para conseguirlo, añadí el siguiente código al archivo functions.php:

function add_query_vars_filter( $vars ){
  $vars[] = "token";
  $vars[] = "username";
  return $vars;
}

add_filter( 'query_vars', 'add_query_vars_filter' );

get_query_var('token');
get_query_var('username');

Esto insertó las dos cadenas de consulta en las variables token y username.

Luego agregué el siguiente código al archivo page.php para imprimir los valores e insertarlos en la base de datos.

<?php if (is_page('tokensuccess')) { if (get_query_var('token')) print "token = $token"; }  ?>

<?php if (is_page('tokensuccess')) { if (get_query_var('username')) print "username = $username"; }  ?>

<?php if (is_page('tokensuccess')) { 
    $token = get_query_var('token');
    $username = get_query_var('username');
    if( $token && $username ){

        global $wpdb;
        $wpdb->insert( 
            'wp_token',
            array( 
                'token' => $token, 
                'username' => $username 
            )
        );
    }
}

?>

Ahora puedo enviar un enlace con cadenas de consulta a mi cliente y obtener automáticamente su token y nombre.

16 abr 2018 21:51:18
Comentarios

Esto no parece funcionar en las páginas de administración, coloqué el filtro directamente en el archivo raíz del plugin. get_query_var devuelve una cadena vacía.

NextGenThemes NextGenThemes
27 ene 2021 18:21:22