dco*_*bus 36 php wordpress class woocommerce
$replace_order = new WC_Cart();
$replace_order->empty_cart( true );
$replace_order->add_to_cart( "256", "1");
Run Code Online (Sandbox Code Playgroud)
以上代码将产品添加256到购物车1时间.但我遇到的问题是我希望能够完全覆盖产品价格...据我所知,我唯一能做的就是将优惠券应用到购物车.
有没有办法将价格完全覆盖到完全定制的东西?
Rat*_*pps 51
这是购物车中产品价格的最高代码
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);
}
}
Run Code Online (Sandbox Code Playgroud)
希望它会有用......
Rat*_*pps 43
您需要if在上面的代码中引入一个用于检查产品ID 的语句:
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;
}
*/
}
}
Run Code Online (Sandbox Code Playgroud)
在任何地方添加此代码,并确保此代码始终可执行.
添加此代码后,您将致电:
global $woocommerce;
$woocommerce->cart->add_to_cart(598);
Run Code Online (Sandbox Code Playgroud)
只有这个产品才会被覆盖的价格被添加,添加到购物车的其他产品将被忽略以获得最高价格.
希望这会有所帮助.
小智 12
我已经尝试了以上所有代码示例和最新的woocommerce 3.0不支持任何上述示例.使用下面的代码,并为我完美工作.
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
function add_custom_price( $cart_object ) {
$custom_price = 10; // This will be your custom price
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$cart_item['data']->set_price($custom_price);
}
}
Run Code Online (Sandbox Code Playgroud)
在发布woocommerce 3.0.0产品价格更新后使用set_price($ price)功能添加到购物车.示例如下:
add_action( 'woocommerce_before_calculate_totals', 'mj_custom_price' );
function mj_custom_price( $cart_object ) {
$woo_ver = WC()->version;
$custom_price = 10;
foreach ( $cart_object->cart_contents as $key => $value )
{
if($woo_ver < "3.0.0" && $woo_ver < "2.7.0")
{
$value['data']->price = $custom_price;
}
else
{
$value['data']->set_price($custom_price);
}
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢