Я пытаюсь создать функцию для 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!';
}
}
Эта функция работает для двух случаев:
- Если все товары в корзине в наличии , это подтверждает правильное сообщение (Все товары в корзине есть в наличии
).
- Если все товары в корзине нет в наличии указывает на правильное сообщение (Все товары в корзине отсутствуют).
Но если в корзине есть товары на складе И товаров на складе, это повторяет первое сообщение (Все товары в корзине есть в наличии).