Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在商业购物车中覆盖可变价格?_Php_Woocommerce_Wordpress - Fatal编程技术网

Php 如何在商业购物车中覆盖可变价格?

Php 如何在商业购物车中覆盖可变价格?,php,woocommerce,wordpress,Php,Woocommerce,Wordpress,我正在试图找到改变/覆盖产品在购物车中的价格的解决方案。例如 我有一个不同颜色的产品,如红色衬衫、绿色衬衫和蓝色衬衫。变体红衫现在在购物车中,所以我想更改购物车中的红衫变体价格。但我不知道如何推翻变型价格 add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' ); function add_custom_price( $cart_object ) { $custom_price = 10; // Th

我正在试图找到改变/覆盖产品在购物车中的价格的解决方案。例如 我有一个不同颜色的产品,如红色衬衫、绿色衬衫和蓝色衬衫。变体红衫现在在购物车中,所以我想更改购物车中的红衫变体价格。但我不知道如何推翻变型价格

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购物车页面的不同价格吗?

您可能需要增加费用

在任何地方添加此代码,并确保此代码始终可执行

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

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

这是一个老问题,但我一直在审视自己,所以我想我会补充我的发现,以防其他人陷入困境:

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

        }

    }

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

        }

    }

}