【问题标题】:WooCommerce - Calculate cart total after Ajax updateWooCommerce - 在 Ajax 更新后计算购物车总数
【发布时间】:2016-10-31 00:19:28
【问题描述】:

我有一小段代码可以计算购物车总额(不含税)并在购物车总额低于 50 美元时输出免费送货加售。

// Shipping Upsell
/**
 * Checks the cart for the Total excluding taxes
 * @param $total_required
 * @return bool
 */
function qualifies_basedon_cart_total( $total_required ) {
    /*
     * We only want to run this on the cart or checkout page
     * If the cart subtotal is less than $total_required for free shipping, return true
     */
if( is_cart() || is_checkout () ) {
    if( WC()->cart->subtotal_ex_tax < $total_required ) {
        return true;
    }
}
// do nothing
return false;
}

function shipup(){
    // tests if total is below $50 and displays upsell if query returns ture
    if( qualifies_basedon_cart_total( 50 ) ) {
    echo "<div class =\"shipup\"><h3>Free Shipping</h3>\n<p>Get free shipping on all orders over $50!</p></div>";
    }
}

add_action ('woocommerce_cart_collaterals','shipup', 1);

上面的代码在初始页面加载时效果很好,但是在更改购物车页面上的数量并选择“更新购物车”后,我上面的代码(在 functions.php 中)不会根据新的购物车总数进行自我调整.

我相信更新购物车按钮使用了 AJAX,而我的代码无法利用它。如何对我的代码进行 AJAXIFY 以便它根据动态购物车总数工作?

【问题讨论】:

    标签: php ajax wordpress woocommerce


    【解决方案1】:
    <?php
    
    /* Update cart total on quantity change */
    
    function cart_select_change_js() {
    ?>
        <script type="text/javascript">
            jQuery(document).ready(function($){
                $(".product-quantity .quantity_select select.qty").change(function(){
                    $("section.entry .woocommerce").append('<div style="display:none" class="blockUI"></div>');
                    $("section.entry .woocommerce").append('<div style="z-index: 1000; border: medium none; margin: 0px; padding: 0px; width: 100%; height: 100%; top: 0px; left: 0px; background: url(&quot;/wp-content/plugins/woocommerce/assets/images/ajax-loader@2x.gif&quot;) no-repeat scroll center center / 16px 16px rgb(255, 255, 255); opacity: 0.6; cursor: wait; position: absolute;" class="blockUI blockOverlay"></div>');
                    $(".actions input.button").click();
                });
            });
        </script>
    <?php
    }
    add_action('woocommerce_after_cart', 'cart_select_change_js', 10);
    ?>
    

    试试这个代码sn-p

    【讨论】:

    • 请注意,这只是提取的代码,没有任何更改。这是您的链接,包括它更新您的答案:gist.github.com/rours/637b722debac38037766;你测试过吗?如果没有,也说未经测试。
    【解决方案2】:

    如果您使用的是 WooCommerce 2.6 及更高版本,WC 已经创建了一种无需额外代码即可完成此操作的方法。

    您需要在“WooCommerce”->“设置”->“配送”->“配送区”下设置“配送区”。

    例如,我有“本地”和“美国”运输区域。

    1. 对于“美国”运输区域,然后我创建了一个“运输方式”(单击该区域以添加运输方式,然后单击标题为“添加运输方式”的灰色按钮)。
    2. 选择“免费送货”方式并点击“添加送货方式”。
    3. 然后点击“免费送货”方式下的“设置”。
    4. 此时,您可以选择设置何时适用免费送货方式。使用“需要免费送货...”的下拉菜单并选择“最低订购量”并在“最低订购量”字段中输入“50”。
    5. 然后单击“保存更改”。

    现在当购物车的总金额为 50 美元或更多时,将提供免费送货服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-29
      • 2017-01-11
      • 1970-01-01
      • 2016-10-09
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      相关资源
      最近更新 更多