![](/img/trans.png)
[英]Greying out “out-of-stock” product variations with custom stock quantity reduction in WooCommerce
[英]Greying out product variations based on stock quantity and SKU
我有一个具有 2 种不同变体的可变产品。 两种变体都在产品级别使用库存。 库存为 3,我有以下两种变化:
产品的库存为3,当有3个信用的人购买该产品时,也通过自定义编写的函数从库存中扣除3,使库存变为0,产品不再可见。
当有人用 1 个积分购买产品时,从库存中扣除 1,因此库存变为 2。如果发生这种情况,我希望变体“用 3 个积分购买”变得无效或不再可见。
当库存等于或小于 2 时,如何检查函数并确保“用 3 个积分购买”变化不再可见或变为非活动状态? - SKU 总是以“003*****”开头
因此,如果产品库存等于或小于 2 且 SKU 以 003 开头,则不会显示产品变体。
我已经开始工作了,我怎样才能检查这个变量的 SKU 是否以“003”开头?
add_filter( 'woocommerce_variation_is_active', 'grey_out_variations_out_of_stock', 10, 2 );
function grey_out_variations_out_of_stock( $is_active, $variation ) {
if ( $variation->get_stock_quantity() == 2 ) return false;
return $is_active;
}
您可以使用$variation->get_sku()
和str_starts_with()
- (PHP 8),它们将检查字符串是否以某个子字符串开头。
所以你得到:
function filter_woocommerce_variation_is_active( $active, $variation ) {
// Get SKU
$sku = $variation->get_sku();
if ( $variation->get_stock_quantity() <= 2 && str_starts_with( $sku, '003' ) ) {
$active = false;
}
return $active;
}
add_filter( 'woocommerce_variation_is_active', 'filter_woocommerce_variation_is_active', 10, 2 );
注意:对于 PHP 7.0 或更早版本,您可以使用substr( $sku, 0, 3 ) === '003'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.