Woocommerce,仅显示具有两个特定类别的产品

问题描述 投票:0回答:1

在 Woocommerce 中,我尝试过滤商店页面上的产品,并仅保留属于两个特定类别的产品。

为了更好地了解我正在尝试做什么,我正在开发一家儿童服装店,我们在一页上有一个表单,用户可以在其中选择孩子的年龄和性别。因此,当他们提交表单时,他们会被带到产品页面,其中显示的唯一服装商品是与之前选择的年龄和性别相对应的商品。

例如,如果我选择“男性”和“3个月大”,则页面上我想要的唯一产品就是同时属于“男性”标签和“3个月”标签的产品。

基本上是产品类别的“AND”过滤器。

我现在能做的就是获取所有具有这两个标签之一的产品。因此,对于“男性”和“3个月大”,产品页面显示所有带有男性标签的衣服,无论年龄,以及所有带有3个月大标签的衣服,无论性别

php wordpress woocommerce categories product
1个回答
0
投票

要在 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”类别。根据您的实际类别名称调整类别名称。

© www.soinside.com 2019 - 2024. All rights reserved.