搜索多个自定义帖子类型和页面

时间:2011-03-22 作者:Zach Shallbetter

我正在使用bainternet\'s 的方法searching custom post_types 而且效果很好。然而,我最近被要求返回一个以上的“特定”帖子类型,可能还有我们网站上支持部分的单独页面。

我认为添加额外的隐藏字段可以做到这一点,但这不起作用。我不知道这将如何处理页面。

任何帮助都将不胜感激!

在模板中:

<form action="http://apollo.website.net/" id="searchform" method="get" role="search">
    <div><label for="s" class="screen-reader-text">Search for:</label>
    <input type="text" id="s" name="s" value="">
    <input type="submit" value="Search" id="searchsubmit">

    <input type="hidden" name="post_type" value="software" />
    </div>
</form>
在函数中。php:

/* Custom Search Queries */
function SearchFilter($query) {
$post_type = $_GET[\'post_type\'];
if (!$post_type) {
    $post_type = \'any\';
}
if ($query->is_search) {
    $query->set(\'post_type\', $post_type);
};
return $query;
} 

3 个回复
最合适的回答,由SO网友:Bainternet 整理而成

改变

<input type="hidden" name="post_type" value="software" />

<input type="hidden" name="post_type[]" value="software" />
<input type="hidden" name="post_type[]" value="books" />
我必须运行,但这应该是可行的,只需为每个帖子类型添加所需的隐藏字段

SO网友:t31os

您可以这样做,在单数集类型和任意。。

<input type="hidden" name="post_type" value="software" />
<label for="post_type">Search all</label>
<input type="checkbox" name="post_type" value="any" />
未选中将搜索特定类型,选中将帖子类型设置为“任意”。。

SO网友:Pedro Muraki

对我来说,该解决方案是可行的(与Bainternet的解决方案相同,但在“post\\u type”之后没有“[]”):

  <input type="hidden" name="post_type" value="photo">
  <input type="hidden" name="post_type" value="video">
并根据帖子类型(在functions.php上)获取搜索结果的特定模板:

function search_template_chooser($template) {
  global $wp_query;
  $post_type = get_query_var(\'post_type\');
  if( $wp_query->is_search && $post_type == \'photo\' || $wp_query->is_search && $post_type == \'video\' ) {
    return locate_template(\'search-media.php\');
  }
  return $template;
}

add_filter(\'template_include\', \'search_template_chooser\');

结束

相关推荐

Refine Search Results

我正在寻找一种实现搜索过滤的简单方法,如下所示:http://ckclinical.co.uk/search/他们显然是在将人们指向一个空搜索,然后按类别进行过滤。我花了几个小时绕圈子:)谢谢。