【发布时间】:2019-02-16 05:21:18
【问题描述】:
我正在尝试为 wordpress/woocommerce 创建一个功能,以在购物车页面中显示拆分交付的选项。
它应该做的是检查购物车中所有物品的库存状态。
第一种情况:如果购物车中的所有商品都可用,则不输出任何内容。
第二种情况:如果购物车中的所有商品都缺货,则不输出任何内容。
第三种情况:应该显示某些内容的唯一条件是两种情况(第一种和第二种)都发生。
因此,只有当购物车有库存商品并且有商品缺货时,它才会显示通知。
以前的版本似乎是错误的方式。所以这是我使用不同代码的新方法。
在functions.php中:
add_action( 'woocommerce_after_cart_table', 'split_devliery_notification' );
function split_devliery_notification() {
$all_items_in_stock = true; // initializing
$all_items_out_of_stock = true;
// Iterating through cart items (to get the stock info)
foreach (WC()->cart->get_cart() as $cart_item) {
# HANDLING SIMPLE AND VARIABLE PRODUCTS
// Variable products
$variation_id = $cart_item['variation_id'];
if( 0 != $variation_id) {
$variation_obj = new WC_Product_variation($variation_id);
$stock = $variation_obj->get_stock_quantity();
} else {
// Simple products
$product_id = $cart_item['product_id'];
$product_obj = new WC_Product($product_id);
$stock = $product_obj->get_stock_quantity();
}
if( $stock <= 0 ){
// if an item is out of stock
$all_items_in_stock = false;
break; // We break the loop
}
elseif ( $stock >= 0 ) {
$all_items_out_of_stock = false;
break;
}
}
// All items "in stock"
if( $all_items_in_stock ) {
echo 'All items in cart are in stock';
}
elseif ( $all_items_out_of_stock ) {
echo 'All items in cart are out of stock';
}
else {
echo 'Some items in cart are in stock and some are out of stock -> Show notification ON!';
}
}
此功能适用于两种情况:
- 如果购物车中的所有商品有货,它会回显正确的消息(购物车中的所有商品都有库存 )。
- 如果购物车中的所有商品缺货,则响应正确的消息(购物车中的所有商品都缺货)。
但如果购物车包含有库存的商品并且 商品缺货,它会回显第一条消息(购物车中的所有商品都有库存)。
【问题讨论】:
-
也许你应该 ping @cornel.raiu 看看他是否会为你这样做
标签: php wordpress woocommerce cart stock