在 Woocommerce 中,我尝试过滤商店页面上的产品,并仅保留属于两个特定类别的产品。
为了更好地了解我正在尝试做什么,我正在开发一家儿童服装店,我们在一页上有一个表单,用户可以在其中选择孩子的年龄和性别。因此,当他们提交表单时,他们会被带到产品页面,其中显示的唯一服装商品是与之前选择的年龄和性别相对应的商品。
例如,如果我选择“男性”和“3个月大”,则页面上我想要的唯一产品就是同时属于“男性”标签和“3个月”标签的产品。
基本上是产品类别的“AND”过滤器。
我现在能做的就是获取所有具有这两个标签之一的产品。因此,对于“男性”和“3个月大”,产品页面显示所有带有男性标签的衣服,无论年龄,以及所有带有3个月大标签的衣服,无论性别
要在 WooCommerce 中使用“AND”操作按多个类别过滤产品,您需要自定义查询并适当构建商店页面 URL。
修改商店页面URL: 通过 附加 & 而不是重复category=来构造 URL 以接受多个类别参数。
示例网址:
/shop/?category=cat1,cat2
自定义查询: 拦截商店页面上的查询并修改它以将所有选定的类别视为必填(“AND”操作)。
这是您可以使用的 PHP 代码片段:
add_filter('woocommerce_product_query', 'custom_product_query');
function custom_product_query($q){
if (isset($_GET['category']) && !empty($_GET['category'])) {
$categories = explode(',', $_GET['category']);
$tax_query = array('relation' => 'AND');
foreach ($categories as $category_slug) {
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $category_slug,
'operator' => 'IN'
);
}
$q->set('tax_query', $tax_query);
}
}
此代码修改 WooCommerce 产品查询以对所选类别强制执行“AND”操作。它构造一个tax_query数组,其中所有类别术语都包含在设置为“AND”的关系中。
添加此代码后,您应该能够构建类似
/shop/?category=cat1,cat2
的 URL,其中产品同时属于“cat1”和“cat2”类别。根据您的实际类别名称调整类别名称。