我有一個具有 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;
}
uj5u.com熱心網友回復:
您可以使用$variation->get_sku()and 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'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487978.html
