WooCommerce:使用价格覆盖将产品添加到购物车?

2022-08-30 11:35:40
$replace_order = new WC_Cart();
$replace_order->empty_cart( true );
$replace_order->add_to_cart( "256", "1");

上面的代码将产品添加到购物车时间。但我遇到的问题是,我希望能够完全覆盖产品价格......据我所知,我唯一能做的就是将优惠券应用于购物车。2561

有没有办法完全覆盖价格到完全自定义的东西?


答案 1

这是用于覆盖购物车中产品价格的代码

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );

function add_custom_price( $cart_object ) {
    $custom_price = 10; // This will be your custome price  
    foreach ( $cart_object->cart_contents as $key => $value ) {
        $value['data']->price = $custom_price;
        // for WooCommerce version 3+ use: 
        // $value['data']->set_price($custom_price);
    }
}

希望它会有用...


答案 2

您需要在上面的代码中引入一个用于检查产品ID的语句:if

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );

function add_custom_price( $cart_object ) {
    $custom_price = 10; // This will be your custome price  
    $target_product_id = 598;
    foreach ( $cart_object->cart_contents as $value ) {
        if ( $value['product_id'] == $target_product_id ) {
            $value['data']->price = $custom_price;
        }
        /*
        // If your target product is a variation
        if ( $value['variation_id'] == $target_product_id ) {
            $value['data']->price = $custom_price;
        }
        */
    }
}

将此代码添加到任何位置,并确保此代码始终是可执行的。

添加此代码后,当您调用:

global $woocommerce; 
$woocommerce->cart->add_to_cart(598);

只有此产品将以覆盖的价格添加,添加到购物车的其他产品将被忽略以覆盖价格。

希望这会有所帮助。


推荐