2013-02-10 2 views
26

나는 내 맞춤 검색 템플릿에서 내 검색이 작동하지 않는 이유를 알아 내는데 많은 시간을 보냈습니다. 지금까지 나는 searchform.php 파일을 내 헤더에 포함시키는 방법을 알아 냈고 현재 search.php 파일을 만들었습니다 (그래서 내가 검색 한 무언가를 검색 할 때 빈 페이지로 리다이렉트됩니다. search.php 파일에서 무언가를 필요로합니다.), Wordpress 코덱스를 모두 읽었지만 해결책을 찾을 수 없었습니다. 유용한 정보 만 찾았습니다.Wordpress 검색 결과를 표시하는 방법?

http://codex.wordpress.org/Creating_a_Search_Page

당신은 검색 결과를 표시하기 위해 수행 할 것을 요구의 제안 할 수 있습니다? 특수 쿼리, 함수 등이 있습니까? 나는 그것을 어디에서도 찾을 수 없다.

searchform.php 파일 필요에 따라

<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

[이 질문과 다른가요?] (http://stackoverflow.com/questions/14800675/wordpress-not-displaying-search-results) –

+0

@DamienPirsy 이전 질문을 삭제했습니다. 사람들이 이해하기가 혼란스러워 짐에 따라, 나는 이것을 더 간단하게 만들었습니다. – Ilja

답변

16

기본적으로, 당신은 검색 결과를 통해 루프로 search.php 템플릿의 워드 프레스 루프를 포함하고 템플릿의 일부로 표시해야합니다.

다음은 ThemeShaper의 The WordPress Theme Search Template and Page Template의 매우 기본적인 예입니다. theme 폴더에 템플릿이 search.phpsearchform.php 여부가 포함되어 있는지 여부를

<?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(); ?> 
9

이미 언급 한 바와 같이 searchform.phpsearch.php 개의 파일을 사용하고 있습니다. 그러나 여기에서는 실제 코드를 제공합니다.

Creating a Search Pagecodex 페이지는 여기에서 #Creating_a_Search_Page_Template은 검색어를 보여줍니다.

필자의 경우 $search_query 인수를 WP_QueryClass (검색 쿼리가 있는지를 결정할 수 있음)에 전달합니다. 나는 the_permalinkthe_title 인 원하는 게시 정보를 표시하기 위해 The Loop을 실행합니다.

검색 상자 형태 :

<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 템플릿 파일 :

당신이 당신의 search.php에서 워드 프레스 루프를 포함 할 필요가
<?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

이 예를

search.php 템플릿 파일 :

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

감사합니다. 그것은 나를 위해 작동합니다. 나는 또한 수색 결과를 위해 수를 세고 싶다. like 4 검색 결과가 있습니다. 어떤 생각? – pagol

+0

그림과 같은 새 코드는 새로운 변수를 추가합니다 : 이것은 그림입니다 : http://i.imgur.com/8NgI15D.png –

+0

결과 수를 확인하려면 다음을 사용하십시오. found_posts; ?>. 문서 : https://codex.wordpress.org/Creating_a_Search_Page –

관련 문제