Saltar al contenido

Cómo pasar variables adicionales en URL con WordPress

Solución:

Para hacer el viaje de ida y vuelta “The WordPress Way” en el “front-end” (no funciona en el contexto de wp-admin), necesita utilizar 3 funciones de WordPress:

  • add_query_arg () – para crear la URL con su nueva variable de consulta (‘c’ en su ejemplo)
  • el filtro query_vars: para modificar la lista de variables de consulta pública que conoce WordPress (esto solo funciona en el front-end, porque WP Query no se usa en el back-end) wp-admin – por lo que esto tampoco estará disponible en admin-ajax)
  • get_query_var () – para recuperar el valor de su variable de consulta personalizada pasada en su URL.

Nota: no es necesario ni siquiera tocar las superglobales ($_GET) si lo hace de esta manera.

Ejemplo

En la página donde necesita crear el enlace / establecer la variable de consulta:

si es un enlace a esta página, simplemente agregue la variable de consulta

<a href="https://foroayuda.es/<?php echo esc_url( add_query_arg("c', $my_value_for_c ) )?>">

si es un enlace a otra página

<a href="https://foroayuda.es/<?php echo esc_url( add_query_arg("c', $my_value_for_c, site_url( '/some_other_page/' ) ) )?>">

En su functions.php, o algún archivo de complemento o clase personalizada (solo front-end):

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

En la página / función donde desea recuperar y trabajar con la consulta var establecida en su URL:

$my_c = get_query_var( 'c' );

En el back-end (wp-admin)

En la parte de atrás, nunca corremos wp(), por lo que la consulta principal de WP no se ejecuta. Como resultado, no hay query vars y el query_vars el gancho no se ejecuta.

En este caso, deberá volver al enfoque más estándar de examinar su $_GET superglobal. La mejor forma de hacer esto es probablemente:

$my_c = filter_input( INPUT_GET, "c", FILTER_SANITIZE_STRING );

aunque en un apuro podrías hacer lo probado y verdadero

$my_c = isset( $_GET['c'] ? $_GET['c'] : "";

o alguna variante del mismo.

Hay muy pocas soluciones para abordar este problema. Primero puede optar por un complemento si lo desea:

  • WordPress Quickie: Complemento de cadena de consulta personalizada

O codifique manualmente, consulte esta publicación:

  • Pasar parámetros de cadena de consulta en la URL de WordPress

También echa un vistazo a:

  • add_query_arg

agregue el siguiente código en function.php

add_filter( 'query_vars', 'addnew_query_vars', 10, 1 );
function addnew_query_vars($vars)
{   
    $vars[] = 'var1'; // var1 is the name of variable you want to add       
    return $vars;
}

entonces podrás usar $ _GET[‘var1’]

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *