我已自定义WooCommerce产品查询,以包含具有特定自定义字段值的产品,例如external_id = 1234或production_year =2017。这可以按预期工作,并且WooCommerce仅显示具有正确自定义字段值的产品。
下一步,我想从产品类别小部件中隐藏空的产品类别,因为我不想向用户显示空的类别。产品查询仍然使用自定义字段值来过滤掉所有不需要的产品。
解决方案似乎是添加
$list_args['hide_empty'] = 1;
到woocommerce_product_categories_widget_args过滤器挂钩。但是可悲的是,即使产品类别为空,仍然会显示它们。似乎该小部件没有使用相同的产品查询来检查类别中是否有任何产品。因此小部件仍显示类别。
那么如何隐藏产品查询中未返回结果的产品类别?
更新:
自定义查询代码:
public function vehicle_model_query($q)
{
$id = self::get_current_vehicle_model_id();
if (isset($id) && !empty($id)) {
$meta_query = $q->get('meta_query');
$meta_query[] = array(
array(
'key' => 'wcwb_product_vehicle_models',
'value' => $id
)
);
$q->set('meta_query', $meta_query);
}
}