Refre sh фрагменты корзины Woocommerce только на указанных c страницах - PullRequest
1 голос
/ 07 февраля 2020

Я использую планку в своей корзине, чтобы показать, сколько нужно потратить, чтобы получить бесплатную доставку. Пока что он работает нормально и обновляется, когда продукт добавляется или удаляется. Проблема в том, что он обновляется при КАЖДОЙ загрузке страницы, когда он нужен только в моей корзине.

function remaining_free_shipping($limit) {
    $amount = wc()->cart->get_subtotal();
    $discount = wc()->cart->get_discount_total();
    $amount = $amount - $discount;
    $remain = $limit - $amount;
    if($remain<0) { $remain = 0; }
    return $remain;
}

function show_upsell_shipping() {
    $limit = 60000;
    $remain = remaining_free_shipping($limit);
    $perc = round(($limit-$remain)/$limit*100);
    $class = "";
    if($remain==0) {
        $perc = 100;
        $texto = "Tienes despacho GRATIS! ?";
        $class = "free-ship";
    } else {
        $texto = "Te faltan " . wc_price($remain) . " para despacho gratis!";
    }
    echo "<div class='upsell-cart-shipping'>";
    echo "<p>".$texto."</p>";
    echo "<div class='bar ".$class."'>";
    echo "<div class='actual-amount' style='width:".$perc."%;'></div>";
    echo "</div>";
    echo "</div>";
}
add_shortcode('show_upsell_shipping', 'show_upsell_shipping');

function update_fragments_on_cart($fragments) {
            ob_start();
            show_upsell_shipping();
            $fragments['.upsell-cart-shipping'] = ob_get_clean();
            return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'update_fragments_on_cart', 10 , 1 );

Есть функция show_upsell_shipping(), которая отображает HTML, который показывает, сколько нужно. На каждом refre sh есть другая функция, которая обновляет фрагменты, update_fragments_on_cart($fragments)

Эта функция перехвачена:

add_filter( 'woocommerce_add_to_cart_fragments', 'update_fragments_on_cart', 10 , 1 );

Я пытался добавить условные выражения, например if(is_page('cart') || is_cart()) в разные части, но, очевидно, средство обновления фрагмента не заботится о том, где оно загружено.

Есть ли способ уменьшить нагрузку, загружая их только в корзину?

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