获取Woocommerce中所有可下载产品的存档

时间:2018-08-06 14:06:42

标签: php wordpress woocommerce download product

我有一个Woocommerce商店,其中包含实际产品和可下载产品,所有产品都是作为简单产品创建的。

我似乎找不到一种显示档案的方法,该档案将我所有可下载的产品显示在一页上。有谁知道该怎么做?

预先感谢, 约翰内斯

3 个答案:

答案 0 :(得分:1)

  

已更新-有很多方法。

1)Woocommerce简码:

这是最佳最简单的方式,您可以在任意选择的页面中使用它。以下代码可让您过滤Woocommerce短代码中的可下载产品

add_filter( 'woocommerce_shortcode_products_query', 'custom_shortcode_products_query', 10, 3 );
function custom_shortcode_products_query( $query_args, $atts, $loop_name ) {
    if( ! is_admin() && 'downloadable' === $atts['class'] )
        $query_args['meta_query'][] = array(
            'key'     => '_downloadable',
            'value'   => 'yes',
            'compare' => '=',
        );

    return $query_args;
}

代码进入活动子主题(或主题)的function.php文件中。经过测试,可以正常工作。

用法:

[products class='downloadable']

或者使用php代码

echo do_shortcode("[products class='downloadable']");

参考: Woocommerce Shortcodes documentation


2)查询字符串替代:

以下代码将允许您在商店页面中显示特定查询字符串的可下载产品,例如:www.yoursite.com/shop/?downloadable=1

代码:

add_filter( 'woocommerce_product_query_meta_query', 'downloadable_products', 30, 2 );
function downloadable_products( $meta_query, $query ) {
    // Only on archive pages
    if( is_admin() || ! is_shop() )
        return $meta_query; // exit

    if( isset($_GET['downloadable']) || $_GET['downloadable'] == '1' ){
        $meta_query[] = array(
            'key'     => '_downloadable',
            'value'   => 'yes',
            'compare' => '=',
        );
    }
    return $meta_query;
}

代码进入活动子主题(或主题)的function.php文件中。经过测试,可以正常工作。

参考:Exclude downloadable products from shop pages in Woocommerce

答案 1 :(得分:0)

如果您不想弄脏代码,请尝试在产品中添加“可下载”类别,然后在页面上使用短代码[products category="downloadable"]

答案 2 :(得分:-1)

You didn't look very far...

以上是显示可下载产品的非常简单的方法。

编辑:因为我没有喂汤而投票否定了?

$products = wc_get_products( array(
    'downloadable' => true

) );

OR

$products = new WC_Product_Query( array(
    'downloadable' => false
) );

$products = $query->get_products();