Ajaxify настраиваемый виджет мини-корзины в Woocommerce - PullRequest
0 голосов
/ 25 октября 2018

Я добавил на свой веб-сайт меню, в котором отображается общее количество товаров в корзине, а также информация о товаре, количестве и цене каждого товара.Это работает только тогда, когда страница обновляется вручную или перенаправляется в корзину.

                    global $woocommerce;

                    $items = $woocommerce->cart->get_cart();
                    $currency = get_woocommerce_currency_symbol();

                    echo '<li><a href="https://www.mywebsite.com/cart/" class="parents"><i class="fas fa-shopping-cart"></i> Cart - ' .  WC()->cart->get_cart_total() . '</a>';
                    echo '<ul class="mega_menu cart">';
                    echo '<li class="mega_sub">';
                    echo '<ul>';

                    foreach($items as $item => $values) {
                      $_product = $values['data']->post;
                      $link = get_permalink($_product);
                      $image = get_the_post_thumbnail($_product);
                      $price = get_post_meta($values['product_id'] , '_price', true);
                      $total = floatval( preg_replace( '#[^\d.]#', '', $woocommerce->cart->get_cart_total() ) );
                      echo '<li>' . $image . '<a href="' . $link . '">' . $_product->post_title . ' <br /><span style=" text-transform:lowercase;"> ' . $currency.$price . ' x ' . $values['quantity'] .'</span></a></li>';
                    }

                    echo '<li><a href="https://www.mywebsite.com/cart/">Go to Checkout</a></li>';
                    echo '</ul></li></ul>';

Я нашел эту функцию, но она только обновляет общую сумму и цену корзины.

https://docs.woocommerce.com/document/show-cart-contents-total/

Нужно ли мне переписать код для подменю или есть другое решение, которое я могу обновить в корзине с помощью функции AJAX?

Спасибо

1 Ответ

0 голосов
/ 25 октября 2018

Ваш код действительно устарел с ошибками и ошибками.Кроме того, Woocommerce уже включает в себя мини-корзину (с редактируемым шаблоном), которую можно использовать * .

1) HTML / PHP-код, который заменит ваш (в вашем файле тематуры hearder.phpЯ полагаю) :

// echo '<ul>'; // (Used for testing)
echo '<li><a class="parents mini-cart-count" href="'.wc_get_cart_url().'"><i class="fa fa-shopping-cart"></i> Cart - ';
## Ajax refresh: Cart subtotal near the cart icon
echo '<span id="mcart-stotal">'.WC()->cart->get_cart_subtotal().'</span>';
echo '</a>';
echo '<ul class="mega_menu cart">';
echo '<li class="mega_sub">';
echo '<span id="mcart-widget">';
## Ajax refresh: Mini cart widget
woocommerce_mini_cart();
echo '</span>';
echo '</li></ul>';
// echo '</li></ul>'; // (Used for testing)

2) Код, который Ajax обновит промежуточный итог вашей мини-корзины и виджет:

add_filter( 'woocommerce_add_to_cart_fragments', 'wc_mini_cart_ajax_refresh' );
function wc_mini_cart_ajax_refresh( $fragments ){
    ## 1. Refreshing mini cart subtotal amount
    $fragments['#mcart-stotal'] = '<span id="mcart-stotal">'.WC()->cart->get_cart_subtotal().'</span>';

    ## 2. Refreshing cart subtotal
    ob_start();
    echo '<span id="mcart-widget">';
    woocommerce_mini_cart();
    echo '</span>';
    $fragments['#mcart-widget'] = ob_get_clean();

    return $fragments;
}

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


Связано: Отображение количества элементов корзины в виджете корзины Woocommerce

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