Checkout.js

时间:2016-08-05 21:23:21

标签: php wordpress woocommerce

我正在加入Woocommerce的woocommerce_calculate_totals设置年龄验证的最低订单金额。基本上,客户需要订购最低1美元的订单。这适用于查看购物车页面,但小计被checkout.js覆盖 - 我可以看到它在页面加载后被修改。

这是functions.php中的代码:

function hv_set_min_total() {
    if( is_checkout() ) {
        global $woocommerce;
        // set minimum cart total
        $min_cart_total = 1;

        // Total used before taxes and shipping
        $total = $woocommerce->cart->subtotal;

        // compare values
        if( $total < $min_cart_total ) {
            $diff = $min_cart_total - $total;
            $woocommerce->cart->subtotal += $diff;
            $woocommerce->cart->cart_contents_total += $diff;
            $woocommerce->cart->subtotal_ex_tax += $diff;
        }
    }
}
add_action( 'woocommerce_calculate_totals', 'hv_set_min_total' );

我还尝试连接各种其他挂钩,这些挂钩都会更改小计,但仍会被checkout.js文件覆盖。关于如何阻止这种情况发生的任何想法?

我尝试过的其他事情,但仍被删除:

  • 添加费用
  • 负折扣

2 个答案:

答案 0 :(得分:0)

我没有康复,但让我们看看这是否适合您,您使用的是woocommerce_calculate_totals,但您没有返回任何内容。

我要做的是:

function totales ($totals){
    //echo "<pre>";
    //print_r($totals);
    //echo "</pre>";

    //All your code ...

    $totals->subtotal_ex_tax = ($totals->subtotal_ex_tax - 100000);
    $totals->cart_contents_total = ($totals->cart_contents_total - 15000);

    return $totals;

}

add_action('woocommerce_calculate_totals', 'totales', 10 , 1);

这样您就可以修改产品的小计和总数而不是价格。

如果您想知道包含该钩子的方法go here

答案 1 :(得分:0)

事实证明,当is_checkout()运行时checkout.js方法显然返回false或不可用,这导致小计恢复到原始状态。

对于遇到此问题的任何人:is_checkout()无法使用checkout.js方法