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 enadmin-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’]