Woocommerce WC()->购物车-> set_cart_contents()不起作用

时间:2019-12-18 16:00:31

标签: wordpress woocommerce cart checkout

我有一个带有定价表的自定义定价WP页面。在那里,我得到3个参数,即$ product_id,$ quantity,$ total_price。我已经将产品创建为常规WC产品,并给每个产品提供了初始价格,说明...等,并获得了ID。

然后通过Ajax将参数发送到PHP函数。此功能:

end:
    leave
    ret

我面临的问题是,尽管增加了产品,增加了数量,购物车坚持显示,并根据初始产品价格进行计算。

示例:

假设产品A的初始价格为$ 15 ...在定价页面中,客户订购了5个单位,因此价格为$ 75。如果他添加第六个单位,则het将获得50%的折扣(仅在附加单位上,整个单位),因此,六个单位的价格变为$ 82.5。页面通过Ajax发送的内容:

  • product_id =产品A的ID(正确无误)
  • 数量= 6(可以)
  • 总价格= 82.5美元(这是问题所在)

无论我做什么,购物车都会显示总计= 6 x 15 = $ 90

我在这里想念什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

那呢?

function my_ajax_functions() {
    check_ajax_referer( 'my_ajax_nonce', 'security' );
    if('checkout' == esc_attr($_POST['required_action'])) {
        $product = esc_attr($_POST['product_id']);
        $qty = esc_attr($_POST['quantity']);
            $price = ltrim(esc_attr($_POST['total_price']), '$');
            WC()->cart->empty_cart();
            WC()->cart->add_to_cart( $product, $qty);
            $cart = WC()->cart->get_cart();
            foreach( $cart as $key => $value ) {
                $value['data']->set_price($price/$qty); // Set the per unit price, so, it match when cart sub total is calculated
            }
            WC()->cart->maybe_set_cart_cookies();
            WC()->cart->calculate_totals();
    }
    die();
}