Funcția is_search nu funcționează pe pagina de rezultate căutare
Am un submeniu suplimentar cu acest cod în bara laterală:
if(is_404() || is_search()) :
echo 'ar trebui să fie gol';
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;
Am o problemă cu prima linie. Funcționează corect pe pagina 404 și pe pagina de căutare când căutați ceva ce nu există, dar când căutați ceva care există, submeniul apare în bara laterală. Ce este în neregulă cu acest cod?

Dacă ceea ce doriți este ca else
să apară pe paginile 404 și pe paginile de căutare dar numai atunci când căutarea nu returnează niciun rezultat, condiția de care aveți nevoie este ...
if(is_404() || (is_search() && 0 === $wp_query->found_posts)) {
// ...
} else {
// ...
}
Diferența dintre aceasta și codul dumneavoastră este că am adăugat o verificare suplimentară pentru a vedea dacă interogarea de căutare are rezultate. Parantezele din jurul is_search() && 0 === $wp_query->found_posts)
fac ca operatorul ||
să opereze pe întreaga clauză, exact ca parantezele în matematică.
Dacă nu doriți ca else
să apară pe nicio pagină de căutare sau 404, atunci aveți nevoie de...
if(!is_404() || !is_search()) {
// ...
} else {
// ...
}
... dar aceasta este exact ceea ce aveți, așa că nu sunt sigur ce încercați să realizați.

Salut, ceea ce vreau este ca meniul să NU apară pe paginile 404, căutare și rezultatele căutării. Acum funcționează bine cu 404 și pagina de căutare fără rezultate, dar când apar rezultate meniul revine...

problema mea este că if(!is_404() || !is_search()) {
nu funcționează întotdeauna. Funcționează bine pe 404 și căutare dacă nu se găsește nimic, dar nu funcționează pe pagina de căutare dacă există rezultate. Nu înțeleg, e ca un bug.
