在WooCommerce购物车和结帐中更改产品价格

时间:2017-07-07 15:32:22

标签: php wordpress woocommerce cart price

我根据访问者选择的选项创建了一个WooCommerce插件来自定义产品,并计算定制价格并将其存储到会话表中。
我也可以在购物车页面中获得该值。

我的问题:
我想更改产品的默认价格,并将其替换为WooCommerce流程中的新计算值,如购物车,结帐,付款,邮件通知,订单...

请问任何建议?

由于

1 个答案:

答案 0 :(得分:4)

使用它的右键是 woocommerce_before_calculate_totals 。但是你必须完成(替换)代码才能在下面的钩子函数中获得新价格:

add_action( 'woocommerce_before_calculate_totals', 'custom_cart_items_prices', 10, 1 );
function custom_cart_items_prices( $cart ) {

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

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    // Loop Through cart items
    foreach ( $cart->get_cart() as $cart_item ) {
        // Get the product id (or the variation id)
        $product_id = $cart_item['data']->get_id();

        // GET THE NEW PRICE (code to be replace by yours)
        $new_price = 500; // <== Add your code HERE

        // Updated cart item price
        $cart_item['data']->set_price( $new_price ); 
    }
}

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

此代码已经过测试,适用于WooCommerce版本3+。但是,由于您没有提供任何代码,我无法对其进行测试,以便从会话中获得新价格...