В Woocommerce я пытаюсь отобразить «сладкое оповещение» JavaScript при достижении определенного количества товаров в корзине из определенной категории.Товары добавляются в корзину через AJAX, поэтому я хочу использовать JavaScript-предупреждение (Sweet alert).
например, если в корзине содержится 5 товаров из категории "Сумки" - Показать предупреждение.
Я исследовал и нашел следующие полезные ответы и использовал их для построения моего кода.Однако я борюсь с применением правила только к количеству продуктов из определенной категории .
На данный момент приведенный ниже код успешно срабатывает, но только на основена количество товаров в корзине.Он игнорирует правило категории продуктов :
Проходящие по корзине элементы корзины и устанавливает счетчик категории продуктов:
// Wordpress Ajax: Get different cart items count
add_action( 'wp_ajax_nopriv_checking_items', 'checking_items' );
add_action( 'wp_ajax_checking_items', 'checking_items' );
function checking_items() {
global $woocommerce, $product;
$i=0;
// Set minimum product cart total
$total_bags = 0;
$total_shoes = 0;
if( isset($_POST['added'])){
// Loop through cart for product category
foreach ( $woocommerce->cart->cart_contents as $product ) :
if ( has_term( 'bags', 'product_cat', $product['22'] ) ) {
$total_bags += $product['quantity'];
} else {
$total_shoes += $product['quantity'];
}
endforeach;
}
die(); // To avoid server error 500
}
Использование jQuery, если подсчитано количество категорий, отобразить предупреждение JavaScript.
// The Jquery script
add_action( 'wp_footer', 'item_check' );
function item_check() {
?>
<script src="https://unpkg.com/sweetalert2@7.20.1/dist/sweetalert2.all.js"></script>
<script type="text/javascript">
jQuery( function($){
// The Ajax function
$(document.body).on('added_to_cart', function() {
console.log('event');
$.ajax({
type: 'POST',
url: wc_add_to_cart_params.ajax_url,
data: {
'action': 'checking_cart_items',
'added' : 'yes'
},
//ONLY DISPLAY ALERT IF TOTAL ITEMS IS FROM CATEGORY BAGS
success: function ($total_bags) {
if($total_bags == 5 ){
//DISPLAY JAVASCRIPT ALERT
const toast = swal.mixin({
toast: true,
showConfirmButton: false,
timer: 3000
});
toast({
type: 'success',
title: '5 Items Added!'
})
}
}
});
});
});
</script>
<?php
}