如何覆盖WooCommerce购物车中的可变价格?

时间:2014-03-16 15:54:27

标签: php woocommerce wordpress

我正在尝试找到改变/覆盖购物车中价格变化产品的价格的解决方案。例如 我有一个可变的产品颜色与不同的变体,如红色衬衫,绿色衬衫和蓝色衬衫。 Variant Red Shirt现在购物车中所以我想改变购物车中的红色衬衫变种价格。但我不知道如何覆盖变种价格。

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;
    }
}

我尝试过以上代码,它只适用于简单的产品而不适用于变体产品。任何人都可以给我一个建议来改变WooCommerce购物车页面中的变种价格吗?

3 个答案:

答案 0 :(得分: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  
    $target_product_id = 598;
    foreach ( $cart_object->cart_contents as $key => $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);

答案 1 :(得分:1)

一个老问题,但我一直在看自己,所以我想加上我的调查结果以防其他人在挣扎:

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );

function add_custom_price( $cart_object ) {

    $custom_price = 199;
    $target_product_id = 123;

    foreach ( $cart_object->cart_contents as $key => $value ) {

        if ( ($value['data']->is_type('simple') && $value['product_id'] == $target_product_id) 
          || ($value['data']->is_type('variable') && $value['variation_id'] == $target_product_id) ) {

            $value['data']->set_price( $custom_price );

        }

    }

}

答案 2 :(得分:0)

您可能需要为其添加费用; https://gist.github.com/kloon/7906768