我有一个Wooccommerce商店,里面有实体产品和可下载产品,都是作为简单产品创建的。
我似乎找不到一种方法来显示一个在一个页面上显示我所有可下载产品的档案。有人知道怎么做吗?
提前感谢,Johannes
更新-有很多方法。
1(Wooccommerce短代码:
这是最佳和最简单的方式,您可以在任何选择的页面中使用它。以下代码将允许您筛选Wooccommerce短代码中的可下载产品:
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']");
参考:Wooccommerce短代码文档
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文件中。测试并工作。
参考:从Woocommerce 的商店页面中排除可下载的产品
如果你不想让代码弄脏你的手,试着在产品中添加一个"可下载"类别,然后在页面上使用缩写[products category="downloadable"]
。
你没看多远。。。
上面是一个显示可下载产品的非常简单的方法。
编辑:因为我没有用勺子喂食而被否决?
$products = wc_get_products( array(
'downloadable' => true
) );
或
$products = new WC_Product_Query( array(
'downloadable' => false
) );
$products = $query->get_products();