@Bolharskyi

Как удалить товар из попап-корзины без перезагрузки страницы?

Занялся разработкой своей темы 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>
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы