Занялся разработкой своей темы WooCommerce. Работаю над попап-корзиной.
При удалении товара из корзины происходит обновление всей страницы и закрытие попапа соответственно. Мне нужно, чтобы содержимое корзины обновлялось без перезагрузки страницы. При добавлении товара все идет как надо, а вот при удалении - нет.
Подскажите, как это можно реализовать без установки сторонних плагинов?
PHP
//ajax adding items
add_filter( 'woocommerce_add_to_cart_fragments', 'cart_popup_fragment', 30, 1 );
function cart_popup_fragment( $fragments ) {
global $woocommerce;
ob_start();
popup_cart_template();
$fragments['.cart__table'] = ob_get_clean();
return $fragments;
}
//cart template function
function popup_cart_template() {
wc_get_template( 'cart/cart-popup.php' );
}
//cart-popup.php content - это кастомизированный код из "заводского" cart.php. Менял только разметку.
<table class="cart__table" cellspacing="0">
<thead>
<tr>
<td></td>
<td></td>
<td class="cart__header_quantity"><?php esc_html_e( 'QTY', 'woocommerce' ); ?></td>
<td class="cart__header_cost"><?php esc_html_e( 'Cost', 'woocommerce' ); ?></td>
</tr>
</thead>
<tbody class="cart__items">
<?php do_action( 'woocommerce_before_cart_contents' ); ?>
<?php
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
$product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
?>
<tr class="cart__item woocommerce-cart-form__cart-item <?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
<td class="cart__item_image product-thumbnail">
<?php
echo apply_filters('woocommerce_cart_item_remove_link',
sprintf('<a href="%s" class="cart__item-remove remove" aria-label="%s" data-product_id="%s" data-product_sku="%s">
X
</a>',
esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
esc_html__( 'Remove this item', 'woocommerce' ),
esc_attr( $product_id ),
esc_attr( $_product->get_sku() )
),
$cart_item_key
);
<!-- and other code...:) -->
HTML
<section class="cart__layout popup" id="cart">
<div class="cart__body">
<div class="cart__content popup__content">
<?php do_action( 'woocommerce_before_cart_table' ); ?>
<div class="popup-close close-popup">
<img src="assets/img/popup/close-icon.png" alt="close-icon" class="popup-close__icon">
</div>
<h1 class="cart__title">
CART
</h1>
<?php popup_cart_template(); ?>
</div>
</div>
</section>