Funcția is_search nu funcționează pe pagina de rezultate căutare

2 iul. 2013, 16:46:39
Vizualizări: 17.8K
Voturi: 4

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?

3
Comentarii

Unde plasați acest cod?

Krzysiek Dróżdż Krzysiek Dróżdż
2 iul. 2013 16:50:23

Îl plasez în sidebar.php

xarai xarai
2 iul. 2013 17:33:57

Nu hardcodați valori pentru postări. Dacă chiar trebuie să folosiți valori 'magice', referiți-vă la slug-urile postărilor

Tom J Nowell Tom J Nowell
27 iun. 2014 02:30:26
Toate răspunsurile la întrebare 1
3

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.

2 iul. 2013 17:31:23
Comentarii

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...

xarai xarai
2 iul. 2013 17:35:39

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.

xarai xarai
3 iul. 2013 10:59:09

Am găsit problema, făcea parte dintr-un alt if/else, excluderea 404 și căutarea trebuia să fie mai devreme în cod. Mulțumesc pentru toate răspunsurile!

xarai xarai
3 iul. 2013 11:46:38