我正试图根据WooCommerce中的不同条件更改单个产品页面上的stock management
可用性文本。
根据“启用产品级库存管理”是on
还是off
,有5种情况。
1.开启,数量:0
1.开启,数量:2
1.开启,数量:3个以上
1.已关闭,缺货
1.已关闭,有库存
我在用
add_filter( 'woocommerce_get_availability', 'wcs_custom_get_availability', 1, 2);
function wcs_custom_get_availability( $availability, $_product ) {
global $product;
// Case 3
if ( $_product->is_in_stock() ) {
$availability['availability'] = __('3. Turned on, Quantity: 3+', 'woocommerce');
}
// Case 2
if ( $_product->is_in_stock() && $product->get_stock_quantity() <= 2 ) {
$availability['availability'] = sprintf( __('2. Turned on, Quantity: 2', 'woocommerce');
}
// Case 5
if ( $_product->is_in_stock() && $product->get_stock_quantity() <= 0 ) {
$availability['availability'] = sprintf( __('5. Turned off, In stock', 'woocommerce'));
}
// Case 4 and 1 - out of stock
if ( ! $_product->is_in_stock() ) {
$availability['availability'] = __('4. Turned off, Out of stock / 1. Turned on, Quantity: 0', 'woocommerce');
}
return $availability;
}
但如何让它为可变产品工作呢?
对于简单产品,它工作完美,但对于可变产品,2种(共5种)情况显示错误结果:
1.开启,数量:0 [工作正常]
1.开启,数量:2 [错误-显示案例编号5]
1.开启,数量:3+ [错误-显示病例编号5]
1.已关闭,缺货[工作正常]
1.已关闭,有库存[工作正常]
1条答案
按热度按时间htrmnn0y1#
if
$product->get_stock_quantity() <= 0
than$_product->is_in_stock()
将始终为false,因为库存编号小于0或等于0,因此您的逻辑中存在错误。也没有必要混合使用
global $product
和$_product
,因为$_product
已经包含了产品对象。$product->managing_stock()
可能会派上用场因此,您可以改用: