检查是否有任何可用产品具有特定属性

时间:2020-02-18 作者:pstidsen

如何检查商店中是否有具有特定产品属性的产品?

我可以询问(例如wc_get_products()) 所有产品,并检查它们(或其变体)是否有库存,然后收集数组中的所有属性值,并根据该数组测试特定属性。

然而,我认为这听起来像是大量的数据库请求,所以我想知道是否有一条我错过的更简单的路径。

1 个回复
SO网友:pstidsen

以下是解决问题的代码:

$woo_args = array(
    \'status\'        => \'publish\',
    \'limit\'         => 1,
    \'stock_status\'  => \'instock\',
    \'brand\'         => 99
);
$products = wc_get_products($woo_args);

if (count($products) == 0){
   //No product with the custom attribute id=99
}

add_filter(\'woocommerce_product_data_store_cpt_get_products_query\', \'my_handle_custom_query_var\', 10, 2);
function my_handle_custom_query_var($query, $query_vars) {
    if (!empty($query_vars[\'brand\'])){
        $query[\'tax_query\'][] = array(
            \'taxonomy\' => \'pa_brand\',
            \'field\'    => \'id\',
            \'terms\'    => $query_vars[\'brand\'],
            \'operator\' => \'IN\',
        );
    }
    return $query;
}

相关推荐