我正在开发一个包含物理和可下载产品的Woocommerce商店。我想改变循环的标准查询以排除所有可下载的产品,但我无法找到一种方法来做到这一点。我希望这些产品只显示在某个存档页面上,这是没有问题的。
我正在使用pre_get_post对查询进行一些其他更改,但我似乎找不到可下载产品的选项。
我所有的产品都是简单的产品。
非常感谢任何帮助!
答案 0 :(得分:0)
您可以使用专用的pre_get_post
Woocommerce操作挂钩,而不是使用woocommerce_product_query
。但由于可下载产品与元查询相关,最好使用woocommerce_product_query_meta_query
Woocommerce专用过滤器钩。
它将仅从商店页面删除可下载的产品:
add_filter( 'woocommerce_product_query_meta_query', 'downloadable_not_in_shop', 20, 2 );
function downloadable_not_in_shop( $meta_query, $query ) {
// Only on archive pages
if( is_admin() || ! is_shop() )
return $meta_query; // exit
$meta_query[] = array(
'key' => '_downloadable',
'value' => 'yes',
'compare' => '!=',
);
return $meta_query;
}
代码进入活动子主题(或主题)的function.php文件。经过测试和工作。
要仅显示可下载的产品,您将使用
'compare' => '=',
代替...