在Woocommerce中仅显示“库存”产品Recent Products shortcode
问题描述:
我需要排除缺货当我的头版使用Woocommerce Recent Products shortcode时显示的项目。在Woocommerce中仅显示“库存”产品Recent Products shortcode
[recent_products]
是否有可能创造像hide_outofstock="true"
或类似的规定停止缺货产品呈现出一个规则?
我已经浏览了网络寻找如何解决这个问题的想法,我根本就没有编码器,但通常我能够frankenstein来解决这样的问题。但是,现在我很难过。所有和任何帮助将不胜感激。
我不能隐藏所有脱销产品通过WooCommerce设置页面,因为他们需要在网站的其他地区可见。
使用“隐藏”而非“不拉”缺货产品的代码仅显示产品已显示的空白空间。
随着库存水平经常变化,需要动态工作 - 通过产品ID手动限制将需要很长时间。
答
经过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' => 'instock',
'compare' => 'LIKE',
));
}
return $query_args;
}, 10, 3);
代码放在您的活动子主题的function.php文件(或主题)或者在任何插件文件中。
在WooCommerce 3+上测试并正常工作。
答
只是一个小小的更新。上面的代码适用于简单的产品,但是使用[recent_products]简码时,库存变化和另一种变种缺货并没有显示。我认为我已经通过改变价值来解决这个问题,并且比较不同意。
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);
答
添加继在你的主题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');
工作出色!非常感谢你的帮助 :) –