我正在以自己的主题在Woocommerce中开发商店。我的问题是,当我想通过查询website.com/?s=product&product_cat=category搜索类别中的产品时,我得到该类别中所有产品的结果。我的页面:http://nsr.przedprojekt.com/wp/?s=kross&product_cat=rowery。
在functions.php中,我没有声明woocommerce,也不想这样做。我尝试覆盖archive-page.php模板,但这也不起作用。
答案 0 :(得分:1)
默认情况下,wordpress搜索仅接受一个参数:?s =您的术语
要在Wordpress搜索中添加更多功能,必须创建一个接受额外参数的新搜索配置。
例如。
如果要在特定类别中进行搜索,则必须创建一个这样的自定义函数:
// advanced search functionality
function advanced_search_query($query) {
if($query->is_search()) {
// your extra param is: in_category // &in_category=sample-category
if (isset($_GET['in_category'])) {
$query->set('category_name', $_GET['in_category']);
}
return $query;
}
}
add_action('pre_get_posts', 'advanced_search_query', 1000);
顺便说一句,这还没有结束。
这是普通Wordpress类别中的自定义搜索,但这与为Woocommerce创建自定义搜索的逻辑相同。
您必须在wordpress WP_Query中添加更多查询变量,就像这样:
// advanced search functionality
function advanced_search_query($query) {
if($query->is_search()) {
if (isset($_GET['in_category'])) {
$query->set('tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array($_GET['in_category']) )
));
}
return $query;
}
}
add_action('pre_get_posts', 'advanced_search_query', 1000);
现在,您可以使用这样的正弦语法:http://nsr.przedprojekt.com/wp/?s=kross&in_category=rowery