在WooCommerce中更改购物车总价

时间:2017-04-14 16:49:46

标签: php wordpress woocommerce cart hook-woocommerce

我遇到的问题是购物车总数仅显示0

基本上我想要做的只是在将所有购物车商品添加到购物车小计后才接受一定金额的存款。

因此,例如,如果客户增加价值100美元的物品,他们最初只需支付10美元或小计的(10%)作为总价值。

我从这里获取代码:Change total and tax_total Woocommerce并以这种方式自定义:

add_action('woocommerce_cart_total', 'calculate_totals', 10, 1);

function calculate_totals($wc_price){
$new_total = ($wc_price*0.10);

return wc_price($new_total);
} 

但启用该代码时总金额显示为0.00 。如果删除了代码,我会得到标准总数。

我也找不到列出完整api的woocommerce网站,只有与如何创建插件有关的通用文章。

任何帮助或正确方向上的一点都会很棒。

2 个答案:

答案 0 :(得分:13)

这不回答这个问题。 Loic的确如此。这是另一种方法,可以显示10%的订单项:

function prefix_add_discount_line( $cart ) {

  $discount = $cart->subtotal * 0.1;

  $cart->add_fee( __( 'Down Payment', 'yourtext-domain' ) , -$discount );

}
add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line' );

enter image description here

答案 1 :(得分:9)

  

自Woocommerce 3.2+以来   使用新的WC_Cart_Totals ...

它不再起作用      

新答案:Change Cart total using Hooks in Woocommerce 3.2+

首先 woocommerce_cart_total 挂钩是过滤器挂钩,而非动作挂钩。此外, wc_price 中的 woocommerce_cart_total 参数为格式化价格,您将无法将其增加10 %。这就是它返回零的原因。

  

在Woocommerce v3.2之前,可以直接访问 WC_Cart properties

您最好使用隐藏在 woocommerce_calculate_totals 操作挂钩中的自定义函数,这样:

// Tested and works for WooCommerce versions 2.6.x, 3.0.x and 3.1.x
add_action( 'woocommerce_calculate_totals', 'action_cart_calculate_totals', 10, 1 );
function action_cart_calculate_totals( $cart_object ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( !WC()->cart->is_empty() ):
        ## Displayed subtotal (+10%)
        // $cart_object->subtotal *= 1.1;

        ## Displayed TOTAL (+10%)
        // $cart_object->total *= 1.1;

        ## Displayed TOTAL CART CONTENT (+10%)
        $cart_object->cart_contents_total *= 1.1;

    endif;
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

  

也可以在此挂钩中使用WC_cart add_fee()方法,或者像 Cristina 回答一样单独使用。