我正在开发我的Woocommerce商店的b2b部分。我已经成功地过滤了woocommerce_product_query_meta_query
,只显示已经启用了b2b部分的产品给b2b用户。
然而,我找不到一种方法来隐藏在Woocommerce类别小部件中显示0个结果的产品类别(因为该类别中没有启用b2b部分的产品)。
我考虑重写默认的Woocommerce小部件代码,并为每个类别(和子类别)运行wp查询,返回启用了b2b的该类别中的产品数量。但是对于大量的产品和类别来说,这似乎非常低效。
有没有一种方法可以隐藏Woocommerce类别小部件中的“空”类别(该类别中没有启用b2b的产品)?
谢谢任何建议。
编辑
为了澄清我的问题:这是我用来过滤产品查询,只显示具有_eda_display_in_b2b
元设置为yes
的产品的函数:
function show_only_b2b_products( $meta_query, $query ) { if ( is_admin() || ! is_user_logged_in() || ! is_b2b_user() ) { return $meta_query; } $meta_query[] = array( 'key' => '_eda_display_in_b2b', 'value' => 'yes', 'compare' => '=' ); return $meta_query; } add_filter( 'woocommerce_product_query_meta_query', 'show_only_b2b_products', 10, 2 );
示例: https://klon.vozikyprozivot.cz/kategorie-produktu/pridavne-pohony/
这个类别对于普通客户和未登录用户来说不是空的。但是对于b2b客户来说,没有产品可以展示。所以我需要为b2b客户隐藏这个类别的小部件。
如果您正在指的是产品分类小部件,那么有一个设置可以隐藏空分类:
如果您指的是其他内容,请提供一个示例页面的URL以及您网站的系统状态。您可以通过WooCommerce > 状态找到它。选择“获取系统报告”,然后“复制以供支持使用”。完成后,请将其粘贴在您的回复中。
希望这能帮到您。
======编辑======
我认为对于上述问题,您可以使用wc类别钩子并删除该类别。请检查下面的代码:
在上面的代码中,我认为您可以制定逻辑并检查类别是否有产品,并为非产品类别创建ID数组。
通过这种方式,您可以从列表和下拉列表中排除该类别。
希望这对您有所帮助。
在Harshit Vaid的大力帮助下,我已经成功解决了这个问题: