如何有条件地向WordPress搜索传递参数以限制帖子类型?

时间:2015-04-30 作者:elemenopy

我有一个包含自定义帖子类型“artwork”的小节的网站

我有一个全面的网站搜索工作如何,我想它-它搜索我的所有帖子和自定义帖子类型。我想在我的artwork小节中添加第二个搜索,它只搜索“artwork”自定义帖子类型。我知道我可以这样限制我的搜索结果:

function mySearchFilter($query) {

    if ($query->is_search) {
            $query->set(\'post_type\',\'artwork\');
    };
    return $query;
};

add_filter(\'pre_get_posts\',\'mySearchFilter\');
但这也会影响整个网站的搜索。如何仅在搜索表单的某些实例上设置帖子类型?我不需要下拉列表或任何方式供用户选择,我只想在某些页面中包含有限的搜索,而不是整个网站搜索。

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

如果您有“自然”艺术品档案(通常设置has_archivetrue 在您的register_post_type() 参数),您已经具备了以下功能:

http://example.com/artwork/?s=query
。。。假设artwork WordPress是您的存档slug,它将只搜索艺术品进行“查询”。

只需设置action 将搜索表单的属性设置为存档URL,如下所示:

<form action="<?php echo get_post_type_archive_link( \'artwork\' ) ?>">

结束

相关推荐

search form display no result

我在页脚中创建了一个searchform。php <div id=\"cd-search\" class=\"cd-search\"> <form role=\"search\" method=\"get\" id=\"searchform\" class=\"searchform\" action=\"<?php echo esc_url( home_url( \'/\' ) ); ?>\"> <input type