自定义帖子类型搜索出现问题

时间:2013-03-14 作者:robert

我使用以下代码构建了一个自定义搜索:

functions.php

function template_chooser($template)   
{    
  global $wp_query;   
  $post_type = get_query_var(\'post_type\');   
  if( $wp_query->is_search && $post_type == \'products\' )   
  {
    return locate_template(\'archive-search.php\');  //  redirect to archive-search.php
  }   
  return $template;   
}
add_filter(\'template_include\', \'template_chooser\'); 

search-archive.php

<?php
        /* Template Name: Custom Search */        
        get_header(); ?>             
        <div class="contentarea">
            <div id="content" class="content_right">  
                     <h3>Search Result for : <?php echo "$s"; ?> </h3>       
                     <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>    
                <div id="post-<?php the_ID(); ?>" class="posts">        
                     <article>        
                    <h4><a href="<?php the_permalink(); title="<?php the_title();     ?>"><?php the_title(); ?></a><h4>        
                    <p><?php the_exerpt(); ?></p>        
                    <p align="right"><a href="<?php the_permalink(); ?>">Read     More</a></p>    
                    <span class="post-meta"> Post By <?php the_author(); ?>    
                     | Date : <?php echo date(\'j F Y\'); ?></span>    

                    </article><!-- #post -->    
                </div>    

           </div><!-- content -->    
        </div><!-- contentarea -->   
        <?php get_sidebar(); ?>
        <?php get_footer(); ?>

search form

  <div>   
     <h3>Search Products</h3>
     <form role="search" action="<?php echo site_url(\'/\'); ?>" method="get" id="searchform">
       <input type="text" name="s" placeholder="Search Products"/>
       <input type="hidden" name="post_type" value="products" /> 
       <input type="submit" alt="Search" value="Search" />   
      </form>  
  </div>
问题是,当我提交一个空的搜索表单时,它会显示所有帖子,但不会显示搜索存档模板。我怎样才能解决这个问题?

2 个回复
最合适的回答,由SO网友:david.binda 整理而成

这不仅与自定义post\\u类型搜索有关。WordPress本身存在空搜索问题。我使用以下简单代码段作为解决方法:

add_filter( \'request\', \'my_request_filter\' );
function my_request_filter( $query_vars ) {
    if( isset( $_GET[\'s\'] ) && empty( $_GET[\'s\'] ) ) {
        $query_vars[\'s\'] = " ";
    }
    return $query_vars;
}
您可以利用这一点,并在此基础上构建自己的代码。

SO网友:Pat J

在里面functions.php 你在寻找archive-search.php, 但你的文件名是search-archive.php. 这是一个简单的打字错误,还是你的问题?

结束

相关推荐

Search Page Returns Nothing

我现在正在做这个website 测试表明搜索页面工作不正常。每次有人搜索某个东西,结果都是空白的。搜索页面的代码如下所示。Search Form:<form role=\"search\" method=\"get\" id=\"searchform\" action=\"/search/\" > <div><label class=\"screen-reader-text\" for=\"s\">Search for:</label>&#x