在我的首页上使用Woocommerce Recent Products短代码时,我需要排除显示缺货项目。
[recent_products]
是否可以创建hide_outofstock="true"
之类的规则或其他类似的规则来停止显示缺货产品?
我已经在网上寻找关于如何解决这个问题的想法,而我根本就没有编码器,但通常我能够坦率地解决这类问题。但是,现在我很难过。所有和任何帮助将不胜感激。
我不能通过WooCommerce设置页面隐藏所有缺货产品,因为它们需要在网站的其他区域中显示。
使用“隐藏”而不是“不拉”缺货产品的代码只显示产品展示的空白区域。
需要在库存水平经常变化时动态运作 - 按产品ID手动限制将花费太长时间。
答案 0 :(得分:6)
2018年6月更新 (针对产品类型兼容性)
在 WC_Shortcodes
类源代码中进行一些搜索后,这是正确的方法:
add_filter( 'woocommerce_shortcode_products_query', function( $query_args, $atts, $loop_name ){
if( $loop_name == 'recent_products' ){
$query_args['meta_query'] = array( array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => 'NOT LIKE',
) );
}
return $query_args;
}, 10, 3);
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
在WooCommerce 3+上测试并且有效。
答案 1 :(得分:1)
只是一个小小的更新。上述代码适用于简单的产品,但在使用[recent_products]短代码时,库存中存在一种变化而另一种变异缺货的变化并未显示。我想我已经通过将值更改为outofstock并与NOT LIKE进行比较来解决此问题。
add_filter( 'woocommerce_shortcode_products_query', function( $query_args, $atts, $loop_name ){
if( $loop_name == 'recent_products' ){
$query_args['meta_query'] = array( array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => 'NOT LIKE',
) );
}
return $query_args;
}, 10, 3);
答案 2 :(得分:0)
在主题的functions.php
文件
function custom_woocommerce_shortcode_products_query( $args ) {
if ( 'yes' == get_option( 'woocommerce_hide_out_of_stock_items' ) ) {
$args['meta_query'][] = array(
'key' => '_stock_status',
'value' => 'instock',
'compare' => 'IN'
);
}
return $args;
}
add_filter( 'woocommerce_shortcode_products_query', 'custom_woocommerce_shortcode_products_query' );