在 Woocommerce Recent Products 短代码中仅显示 "in stock" 产品
Display only "in stock" products in Woocommerce Recent Products shortcode
当我的首页上使用 Woocommerce Recent Products 简码时,我需要排除 缺货 项目。
[recent_products]
是否可以创建类似 hide_outofstock="true"
或类似规则的规则来停止显示缺货产品?
我在网上搜索了有关如何解决此问题的想法,我根本不是编码员,但通常我能够通过科学怪人来解决此类问题。但是,现在我很难过。我们将不胜感激所有帮助。
我不能只通过 WooCommerce 设置页面隐藏所有缺货产品,因为它们需要在网站的其他区域可见。
使用 "hides" 而不是 "doesn't pull" 缺货产品的代码只会在本应显示产品的地方显示空白。
需要动态工作,因为库存水平经常变化 - 通过产品 ID 手动限制会花费太长时间。
2018 年 6 月更新 (产品类型兼容性)
在 WC_Shortcodes
class 源代码中稍作搜索后,这里是正确的方法:
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+ 上测试并有效。
只是一个小更新。上面的代码适用于简单的产品,但是当使用 [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);
在主题的 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' );
当我的首页上使用 Woocommerce Recent Products 简码时,我需要排除 缺货 项目。
[recent_products]
是否可以创建类似 hide_outofstock="true"
或类似规则的规则来停止显示缺货产品?
我在网上搜索了有关如何解决此问题的想法,我根本不是编码员,但通常我能够通过科学怪人来解决此类问题。但是,现在我很难过。我们将不胜感激所有帮助。
我不能只通过 WooCommerce 设置页面隐藏所有缺货产品,因为它们需要在网站的其他区域可见。
使用 "hides" 而不是 "doesn't pull" 缺货产品的代码只会在本应显示产品的地方显示空白。
需要动态工作,因为库存水平经常变化 - 通过产品 ID 手动限制会花费太长时间。
2018 年 6 月更新 (产品类型兼容性)
在 WC_Shortcodes
class 源代码中稍作搜索后,这里是正确的方法:
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+ 上测试并有效。
只是一个小更新。上面的代码适用于简单的产品,但是当使用 [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);
在主题的 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' );