繁体   English   中英

根据库存数量和 SKU 灰显产品变化

[英]Greying out product variations based on stock quantity and SKU

我有一个具有 2 种不同变体的可变产品。 两种变体都在产品级别使用库存。 库存为 3,我有以下两种变化:

  • 用 1 积分购买
  • 用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM