is_search non funziona nella pagina dei risultati di ricerca
Ho un sottomenu aggiuntivo con questo codice nella sidebar:
if(is_404() || is_search()) :
echo 'dovrebbe essere vuoto';
else :
if($post->post_parent == '68')
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) {
?><ul><?php echo $children; ?></ul><?php
}
endif;
Ho un problema con la prima riga. Funziona bene nella pagina 404 e nella pagina di ricerca quando si cerca qualcosa che non esiste, ma quando si cerca qualcosa che esiste, il sottomenu compare nella sidebar. Cosa c'è che non va in questo codice?

Se quello che vuoi è che il codice else
venga visualizzato nelle pagine 404 e nelle pagine di ricerca ma solo quando la ricerca non restituisce risultati, la condizione di cui hai bisogno è...
if(is_404() || (is_search() && 0 === $wp_query->found_posts)) {
// ...
} else {
// ...
}
La differenza tra questo e il tuo codice è che ho aggiunto un controllo aggiuntivo per verificare se la query di ricerca ha dei risultati. Le parentesi attorno a is_search() && 0 === $wp_query->found_posts)
fanno sì che l'operatore ||
agisca sull'intera clausola, proprio come le parentesi in matematica.
Se non vuoi che il codice else
appaia in nessuna pagina di ricerca o 404, allora ti serve...
if(!is_404() || !is_search()) {
// ...
} else {
// ...
}
... ma questo è quello che hai già, quindi non sono sicuro di cosa stai cercando di ottenere.

Ciao, quello che voglio è che il menu NON venga visualizzato nelle pagine 404, di ricerca e nei risultati di ricerca. Attualmente funziona bene con la pagina 404 e la pagina di ricerca senza risultati, ma quando ottengo dei risultati il menu ricompare...

il mio problema è che if(!is_404() || !is_search()) {
non funziona sempre. Funziona bene sulla pagina 404 e sulla ricerca quando non si trova nulla, ma non funziona sulla pagina di ricerca se ci sono risultati. Non capisco, sembra un bug.
