如何创建可以搜索分类和帖子的搜索表单?

时间:2012-01-25 作者:Steven Baltay

我在我的主题主页上有一个搜索栏。我希望用户能够从下拉列表中进行选择,以搜索所有内容、帖子或分类法。我查看了wp\\u下拉函数,但它用于在单个标记下搜索,而不是在分类组中搜索。

现在我在搜索表单旁边有一个html下拉列表。如何使用下拉列表中的选择修改搜索?

这是我正在使用的代码

<form class="searchform" method="get" action="#">
        <fieldset>
            <legend class="hidden">Search form</legend>
            <div class="input-holder">
                <input class="search" name="s" type="text" value="Search Here"/>
            </div>
            <select name="cat" id="cat" class="postform" style="display: none; ">
                <option value="0" selected="selected">Everything</option>
                <option class="level-0" value="1">People</option>
                <option class="level-0" value="2">Schools</option>
            </select>
            <button value="submit" class="searchBtn"><span class="hidden">Submit</span></button>
            <!--END #searchform-->
        </fieldset>
    </form>

1 个回复
SO网友:Shane

我相信这样的事情会成功的。

EDIT

我的代码假定querystring值是post\\u类型,而不是像表单字段那样的整数。此外,您的表单字段名为“cat”,我认为WordPress保留了这个字段,至少我记得上次在查询字符串中使用“cat”时发生了冲突。

EDIT 2

(完成一些测试后,将筛选器从“posts\\u where”更改为“pre\\u get\\u posts”)

在函数中。php

 function my_filter( $query )
 {
      if( is_search() )
      {
           $type = ( !empty( $_GET[\'your-field\'] ) ) ? $_GET[\'your-field\'] : "";

           if( $type )
                $query->set( \'post_type\', $type );
      }
 }
 add_filter( \'pre_get_posts\', \'my_filter\' );

结束

相关推荐

Search by meta_query

我正在建立一个具有事件功能的Wordpress网站。“事件”页面是使用自定义帖子类型创建的。我想让人们能够按日期搜索/过滤事件。例如,他们可以搜索2011年12月2日至2012年3月1日之间发生的所有事件,并从日期介于12月和3月(即12月、1月、2月和3月)之间的事件中获取结果。我想知道最好的方法。有什么想法吗?通过查看此页面上的“按日期搜索事件”功能,您可以看到我想要实现的一个示例http://www.londontown.com/events以下是开始和结束日期元框的代码:$prefix = \'g