将搜索限制为自定义帖子类型

时间:2018-08-31 作者:Alt C

我在主页上有一个搜索表单,在侧边栏上有一个搜索表单。是否可以使主页中的搜索表单按照特定模板显示结果,并使侧栏搜索表单显示其他模板?

我想让主页搜索框以不同的方式显示结果。这是一个自定义帖子。所以,如果用户使用该表单,它应该只包含来自该自定义帖子的数据。但是侧边栏中的默认wordpress搜索框应该可以从整个网站获得结果。

例如,使用地图列出搜索页面结果

谢谢

1 个回复
最合适的回答,由SO网友:Ray Gulick 整理而成

通过修改基本WP搜索表单,可以将搜索限制为自定义帖子类型,如下所示:

<form id="cptsearch" action="<?php echo home_url(); ?>" method="get">
    <input type="text" name="s" />
    <input type="hidden" name="post_type" value="POSTTYPENAME" />
    <input id="searchsubmit" type="submit" alt="Search" value="Search" />
</form>
要为自定义帖子类型搜索选择专用模板,请在函数文件中添加此过滤器:

function template_chooser($template) {
    global $wp_query;
    $post_type = get_query_var(\'post_type\');
    if( $wp_query->is_search && $post_type == \'POSTTYPENAME\' ) {
    return locate_template(\'page_POSTTYPENAME.php\');
    }
    return $template;
}
add_filter(\'template_include\', \'template_chooser\');
当然,您必须创建专门的搜索结果模板:page\\u POSTTYPENAME。php

结束

相关推荐

如何将变量传递给Get_Search_Form()?

是否可以将变量传递给get_search_form()? 我在两个地方使用它:一个在标题中,另一个在内容的搜索页面上。后者必须具有附加类,例如。search--full. 我试着用is_search() 但尽管它在其他页面上运行良好,但在搜索页面上,两种表单都有search--full 班