Ricerca parametri URL nella query
Possibile duplicato:
Modulo di ricerca personalizzato con parametri vuoti
Spero sia una domanda veloce, ma mi sono bloccato qui.
Ho diversi termini di ricerca: keyword, categoria, paese e data. L'ho configurato in modo che l'utente non debba utilizzare tutti questi filtri. Posso omettere la categoria e/o la data e mostra comunque risultati più generici.
Ma se ometto il paese non mostra alcun risultato, mentre fare lo stesso con qualsiasi altro parametro mostra comunque risultati. Il problema riguarda solo il parametro country.
/?s=a&cat=41&country=&monthnum=&year=
non produce risultati ma
/?s=a&cat=41&monthnum=&year=
sì.
Perché? Non dovrebbero essere la stessa cosa?
Questa è la mia wp_query, che semplicemente recupera i post. Avevo il foreach per risolvere questo problema prima, ma attualmente se lo rimuovo la ricerca funziona esattamente allo stesso modo.
$args = array('post_type' => 'post')
// Questo foreach in realtà non ha bisogno di essere qui ?
foreach(array('s', 'cat', 'country', 'monthnum', 'year') as $key) {
if(isset($_GET[$key]) && trim($_GET[$key]) !== '') {
$args[$key] = $_GET[$key];
}
}

La tua variabile di query country
non è definita, non fa parte del set standard query_vars
di WordPress, mentre sia monthnum
che year
lo sono ed è per questo che funzionano mentre la prima no.
Quindi devi aggiungere la tua variabile di query al mix, prova con quanto segue:
function new_query_var() {
global $wp;
$wp->add_query_var('country');
}
add_filter('init', 'new_query_var');
Inoltre, sembra che il tuo foreach
stia verificando l'esistenza di questa variabile di query e quindi, poiché non è impostata (es. isset
), non supera il controllo condizionale.

Ciao, grazie per la risposta. E sì, ha senso riguardo al foreach. Ho aggiunto la tua funzione in functions.php ma ancora nessun cambiamento. Non trova nulla se è presente il parametro country=
. O ho frainteso quello che intendevi?

Sostituisci temporaneamente il blocco if { }
con var_dump($key);
, cosa vedi?
