Búsqueda con parámetros URL en WordPress - Solución a problema con país
Posible duplicado:
Formulario de búsqueda personalizado con parámetros vacíos
Espero que esta sea una pregunta rápida, pero me he topado con un muro aquí.
Tengo múltiples términos de búsqueda: palabra clave, categoría, país y fecha. Lo he configurado para que el usuario no tenga que buscar usando todos estos filtros. Puedo omitir la categoría y/o la fecha y mostrará resultados más amplios.
Pero si omito el país, no muestra ningún resultado, mientras que hacer lo mismo con cualquier otro parámetro sigue mostrando resultados. El problema solo ocurre con el país.
/?s=a&cat=41&country=&monthnum=&year=
no produce resultados, pero
/?s=a&cat=41&monthnum=&year=
sí lo hace.
¿Por qué ocurre esto? ¿No deberían ser lo mismo?
Este es mi wp_query, simplemente obtiene posts. Tenía el foreach para limpiar este problema antes, pero actualmente si lo quito, la búsqueda funciona exactamente igual.
$args = array('post_type' => 'post') // Este foreach realmente no necesita estar aquí ? foreach(array('s', 'cat', 'country', 'monthnum', 'year') as $key) { if(isset($_GET[$key]) && trim($_GET[$key]) !== '') { $args[$key] = $_GET[$key]; } }

La variable de consulta country
no está definida, no es parte del conjunto estándar query_vars
de WordPress, mientras que tanto monthnum
como year
sí lo están y es por eso que funcionan mientras que la primera no.
Necesitas agregar tu variable de consulta al conjunto, prueba con lo siguiente:
function new_query_var() {
global $wp;
$wp->add_query_var('country');
}
add_filter('init', 'new_query_var');
Además, parece que tu foreach
está verificando la existencia de esta variable de consulta y como no está configurada (ej. isset
), falla la verificación condicional.

Hola, gracias por la respuesta. Y sí, eso tiene sentido sobre el foreach. Añadí tu función en functions.php pero aún no hay cambios. No encuentra nada si el country=
está presente. ¿O te he entendido mal?
