Обновление пользовательского компонента на событиях корзины в Woocommerce - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть компонент, называемый корзиной, который отображается на странице woocommerce archive-product.php.Когда кто-то нажимает добавить на карточку одного из продуктов на этой странице, я хочу, чтобы этот компонент обновился, чтобы показать количество товаров, название и цену.В настоящее время я использую следующий код для отображения этой информации, но вам нужно обновить страницу, чтобы она обновлялась после нажатия кнопки «Добавить в корзину».

<div class="cart-wrap">
    <p class="cart-title">Currently in Cart</p>
    <?php
        global $woocommerce;
        $items = $woocommerce->cart->get_cart();

            foreach($items as $item => $values) { 
                $_product =  wc_get_product( $values['data']->get_id()); 
                echo "<p>" . $_product->get_title().'<span class="amount"> x '.$values['quantity']; 
                $price = get_post_meta($values['product_id'] , '_price', true);
                echo " $".$price."</span></p>";
            } 
    ?>
    <a class="cart-checkout" href="<?php echo wc_get_cart_url(); ?>" >Checkout</a>
</div>

Я хочу использовать ajax, я бы предположил, но недаже знаю, с чего начать выяснять, как заставить его работать.

Хорошо, спасибо заранее.

1 Ответ

0 голосов
/ 24 декабря 2018

Чтобы отрегулировать компоненты корзины (или вызвать их во фрагментах Woocommerce), вы будете использовать следующее:

1) ваш компонент кода:

<div class="cart-wrap">
    <p class="cart-title"><?php _e("Currently in Cart", "woocommerce"); ?></p>
    <div id="cart-items-wrap">
    <?php
        foreach( WC()->cart->get_cart() as $cart_item ) {
            printf( '<p>%s<span class="amount"> x %s %s</span></p>',
                $cart_item['data']->get_title(),
                $cart_item['quantity'],
                wc_price( wc_get_price_to_display( $cart_item['data'] ) )
            );
        }
    ?>
    </div>
    <a class="cart-checkout" href="<?php echo wc_get_cart_url(); ?>"><?php _e("Checkout", "woocommerce"); ?></a>
</div>

2) Подключенная функция, которая будетajax обновляет ваш компонент:

add_filter( 'woocommerce_add_to_cart_fragments', 'ajaxify_components', 10, 1 );
function ajaxify_components( $fragments ) {
    ob_start();
    ?>
    <div id="cart-items-wrap">
    <?php
        foreach( WC()->cart->get_cart() as $cart_item ) {
            printf( '<p>%s<span class="amount"> x %s %s</span></p>',
                $cart_item['data']->get_title(),
                $cart_item['quantity'],
                wc_price( wc_get_price_to_display( $cart_item['data'] ) )
            );
        }
    ?>
    </div>
    <?php
    $fragments['#cart-items-wrap'] = ob_get_clean();

    return $fragments;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...