有个客户使用WordPress问答主题Helpguru做了个网站,他的需求是首页的搜索表单可以搜索全部内容,论坛搜索表单只能搜索论坛,知识库页搜索只能搜索知识问答,新闻页只能搜索文章信息,这个要求说明,该网站要使用四个不同的搜索表单,而默认的只有一个搜索表单,关于不同的搜索表单搜索不同的内容可以通过在表单中加入下面代码实现:
<input type=”hidden” name=”post_type[]” value=”post” />
value后面的值就是文章类型,比如上面的表示文章类型,如果我们创建了一个文章类型为“portfolio”,那么后面的post就为portfolio。如果要搜索所有,我们可以是any。通过这种方式,我们可以设计不同功能的搜索表单。
这个表单设计不算难,加入相应的代码就可以。
WordPress用来展现搜索结果的文件是search.php这个文件,也就是说如果没有特殊设计的话,就是调用search.php这个文件。针对Helpguru主题,论坛可以采用里面自带的搜索结果页,我们可以不用管。知识库搜索页可以调用知识搜索结果页,文章可以调用默认的文章搜索页。
现在的问题是首页调用的结果页,默认也是调用上面的新闻搜索结果页。search.php文件里面设计如下:
上面的文件只对知识库搜索表单进行了判断。我们怎么对首页的搜索表单进行判断?我们还是需要使用type=“hidden”这个进行判断。例如我们加入了下面代码:
<input type=”hidden” name=”post_type” value=”any” />
可以在search.php文件里面做个判断:
if( isset($_REQUEST[‘post_type’]) == ‘any’ ) {
}else{
}
通过这样的方式,就可以解决我们的问题。