从Woocommerce的商店页面中排除可下载的产品

时间:2018-03-21 20:48:14

标签: php wordpress woocommerce metadata product

我正在开发一个包含物理和可下载产品的Woocommerce商店。我想改变循环的标准查询以排除所有可下载的产品,但我无法找到一种方法来做到这一点。我希望这些产品只显示在某个存档页面上,这是没有问题的。

我正在使用pre_get_post对查询进行一些其他更改,但我似乎找不到可下载产品的选项。

我所有的产品都是简单的产品。

非常感谢任何帮助!

1 个答案:

答案 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' => '=',代替...