结帐和购物车页面的woocommerce更改价格

时间:2017-04-07 17:32:58

标签: php wordpress woocommerce checkout hook-woocommerce

使用woocommerce,在我的网站中,我想在购物车页面中添加一个选择输入,用户可以在两个选项之间选择一个值,并根据此值我将更改价格。

到目前为止,我可以得到总数并使用它来改变它:

    Case 
       when Rate >= 0 then Rate
       when ProjectRate >= 0 then ProjectRate
       else 0
    end 

问题在于,当我进入结帐页面时,它不需要在functions.php中计算总数。

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

您也可以同时使用 woocommerce_review_order_before_order_total 挂钩,以这种方式在结帐时显示您的自定义价格:

add_action( 'woocommerce_review_order_before_order_total', 'custom_cart_total' );
add_action( 'woocommerce_before_cart_totals', 'custom_cart_total' );
function custom_cart_total() {

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

    WC()->cart->total *= 0.25;
    //var_dump( WC()->cart->total);
}

代码进入活动子主题(或主题)的function.php文件或任何插件文件中。

此代码经过测试并有效。

答案 1 :(得分:1)

付款网关始终使用$ order-> get_total()变量来获取购物车总额。所以为了调整使用这个过滤器woocommerce_order_amount_total 如果您按照以下步骤操作,请执行以下操作。您的支付网关始终显示您调整的总数。

add_filter( 'woocommerce_order_amount_total', 'custom_cart_total' );
function custom_cart_total($order_total) {
  return $order_total *= 0.25;
}