2013-02-10 15 views
26

Spędziłem dużo czasu, zastanawiając się, dlaczego moje wyszukiwanie nie działa w moim niestandardowym szablonie. Do tej pory udało mi się wymyślić, jak dołączyć plik searchform.php do mojego nagłówka, utworzonego pliku search.php, który jest obecnie pusty (w momencie, gdy szukam czegoś, przekierowuję go do pustej strony i myślę, że zdecydowanie potrzebuję czegoś w pliku search.php, aby działało), czytałem cały kodeks Wordpress, ale nie mogłem znaleźć rozwiązania, tylko użyteczne informacje znalazłem.Jak wyświetlić wyniki wyszukiwania Wordpress?

http://codex.wordpress.org/Creating_a_Search_Page

można sugerować co potrzeba do zrobienia w celu wyświetlenia wyników wyszukiwania? czy istnieje specjalne zapytanie, funkcja itp.? Naprawdę nie mogę go nigdzie znaleźć.

mój searchform.php plik w razie potrzeby.

<form action="<?php echo home_url(); ?>" id="search-form" method="get"> 
    <input type="text" name="s" id="s" value="type your search" onblur="if(this.value=='')this.value='type your search'" 
    onfocus="if(this.value=='type your search')this.value=''" /> 
    <input type="hidden" value="submit" /> 
</form> 
+0

Czy to nie to samo co [to inne pytanie?] (Http://stackoverflow.com/questions/14800675/wordpress-not-displaying-search-results) –

+0

@DamienPirsy To było, usunąłem poprzednie pytanie jak się okazało, że ludzie zrozumieli, że to zrozumiałem, uprościłem to. – Ilja

Odpowiedz

16

Zasadniczo trzeba zawierać Wordpress pętlę w szablonie search.php pętli wynikach wyszukiwania i pokazać je jako część szablonu. Jest to bardzo prosty przykład z The WordPress Theme Search Template and Page Template na stronie ThemeShaper.

<?php 
/** 
* The template for displaying Search Results pages. 
* 
* @package Shape 
* @since Shape 1.0 
*/ 

get_header(); ?> 

     <section id="primary" class="content-area"> 
      <div id="content" class="site-content" role="main"> 

      <?php if (have_posts()) : ?> 

       <header class="page-header"> 
        <h1 class="page-title"><?php printf(__('Search Results for: %s', 'shape'), '<span>' . get_search_query() . '</span>'); ?></h1> 
       </header><!-- .page-header --> 

       <?php shape_content_nav('nav-above'); ?> 

       <?php /* Start the Loop */ ?> 
       <?php while (have_posts()) : the_post(); ?> 

        <?php get_template_part('content', 'search'); ?> 

       <?php endwhile; ?> 

       <?php shape_content_nav('nav-below'); ?> 

      <?php else : ?> 

       <?php get_template_part('no-results', 'search'); ?> 

      <?php endif; ?> 

      </div><!-- #content .site-content --> 
     </section><!-- #primary .content-area --> 

<?php get_sidebar(); ?> 
<?php get_footer(); ?> 
4

Sprawdź, czy szablon w folderze theme zawiera search.php i searchform.php czy nie.

9

Używam plików searchform.php i search.php jak już wspomniano, ale tutaj podam rzeczywisty kod. Pomocna jest tutaj strona

Creating a Search Pagecodex strona i #Creating_a_Search_Page_Template wyświetla zapytanie.

W moim przypadku przekazuję argumenty $search_query do WP_QueryClass (które mogą ustalić, czy jest to zapytanie wyszukiwania!). Następnie uruchamiam The Loop, aby wyświetlić informacje o wpisie, które chcę, w moim przypadku: the_permalink i the_title.

Formularz wyszukiwania okno:

<form class="search" method="get" action="<?php echo home_url(); ?>" role="search"> 
    <input type="search" class="search-field" placeholder="<?php echo esc_attr_x('Search …', 'placeholder') ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x('Search for:', 'label') ?>" /> 
    <button type="submit" role="button" class="btn btn-default right"/><span class="glyphicon glyphicon-search white"></span></button> 
</form> 

search.php plik szablonu:

<?php 
    global $query_string; 
    $query_args = explode("&", $query_string); 
    $search_query = array(); 

    foreach($query_args as $key => $string) { 
     $query_split = explode("=", $string); 
     $search_query[$query_split[0]] = urldecode($query_split[1]); 
    } // foreach 

    $the_query = new WP_Query($search_query); 
    if ($the_query->have_posts()) : 
    ?> 
    <!-- the loop --> 

    <ul>  
    <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 
     <li> 
      <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
     </li> 
    <?php endwhile; ?> 
    </ul> 
    <!-- end of the loop --> 

    <?php wp_reset_postdata(); ?> 

<?php else : ?> 
    <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> 
<?php endif; ?> 
21

trzeba zawierać pętlę Wordpress w search.php jest przykładem

search.php plik szablonu:

<?php get_header(); ?> 
<?php 
$s=get_search_query(); 
$args = array(
       's' =>$s 
      ); 
    // The Query 
$the_query = new WP_Query($args); 
if ($the_query->have_posts()) { 
     _e("<h2 style='font-weight:bold;color:#000'>Search Results for: ".get_query_var('s')."</h2>"); 
     while ($the_query->have_posts()) { 
      $the_query->the_post(); 
       ?> 
        <li> 
         <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
        </li> 
       <?php 
     } 
    }else{ 
?> 
     <h2 style='font-weight:bold;color:#000'>Nothing Found</h2> 
     <div class="alert alert-info"> 
      <p>Sorry, but nothing matched your search criteria. Please try again with some different keywords.</p> 
     </div> 
<?php } ?> 

<?php get_sidebar(); ?> 
<?php get_footer(); ?> 
+0

dzięki. mi to pasuje. Chcę również policzyć liczbę dla wyniku wyszukiwania. jak 4 znalezione wyniki wyszukiwania. jakikolwiek pomysł? – pagol

+0

nowy kod jak pic dodaj nowy variabe: to jest zdjęcie: http://i.imgur.com/8NgI15D.png –

+0

Aby sprawdzić wynik, użyj: found_posts; ?>. Dokumentacja: https://codex.wordpress.org/Creating_a_Search_Page –

Powiązane problemy