我有一个Woocommerce商店,其中包含实际产品和可下载产品,所有产品都是作为简单产品创建的。
我似乎找不到一种显示档案的方法,该档案将我所有可下载的产品显示在一页上。有谁知道该怎么做?
预先感谢, 约翰内斯
答案 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)
以上是显示可下载产品的非常简单的方法。
编辑:因为我没有喂汤而投票否定了?
$products = wc_get_products( array(
'downloadable' => true
) );
OR
$products = new WC_Product_Query( array(
'downloadable' => false
) );
$products = $query->get_products();