从 Woocommerce 的商店页面中排除可下载产品
Exclude downloadable products from shop pages in Woocommerce
我正在开发一个包含实体产品和可下载产品的 Woocommerce 商店。我想更改循环的标准查询以排除所有可下载产品,但我想不出办法。我希望这些产品只显示在某个存档页面上,这是没有问题的。
我正在使用 pre_get_post 对查询进行一些其他更改,但我似乎找不到可下载产品的选项。
我所有的产品都是简单的产品。
如有任何帮助,我们将不胜感激!
您可以使用专用的 woocommerce_product_query
Woocommerce 操作挂钩,而不是使用 pre_get_post
。但由于可下载产品与元查询相关,因此最好使用 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 文件。已测试并有效。
To display only downloadable products you will use 'compare' => '=',
instead…
我正在开发一个包含实体产品和可下载产品的 Woocommerce 商店。我想更改循环的标准查询以排除所有可下载产品,但我想不出办法。我希望这些产品只显示在某个存档页面上,这是没有问题的。
我正在使用 pre_get_post 对查询进行一些其他更改,但我似乎找不到可下载产品的选项。
我所有的产品都是简单的产品。
如有任何帮助,我们将不胜感激!
您可以使用专用的 woocommerce_product_query
Woocommerce 操作挂钩,而不是使用 pre_get_post
。但由于可下载产品与元查询相关,因此最好使用 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 文件。已测试并有效。
To display only downloadable products you will use
'compare' => '=',
instead…