- This topic is empty.
- AuthorPosts
-
September 8, 2012 at 1:13 am #10015
dcolumbus
Participant$replace_order = new WC_Cart(); $replace_order->empty_cart( true ); $replace_order->add_to_cart( "256", "1");
The above code add product
256
to the Cart1
time. But the issue I’m having is that I want to be able to completely override the product price… as far as I can tell, the only thing I can do it apply a coupon to the Cart.Is there a way to completely override the price to something totally custom?
September 8, 2012 at 11:31 am #10025ratnakar—storeapps
ParticipantHere is the code for overriding price of product in cart
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); } }
Hope it will be useful…
January 20, 2014 at 6:50 am #10024ratnakar—storeapps
ParticipantYou need to introduce an
if
statement for checking product id, in above code: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; } */ } }
Add this code anywhere and make sure that this code is always executable.
After adding this code, when you’ll call:
global $woocommerce; $woocommerce->cart->add_to_cart(598);
Only this product will be added with overridden price, other products added to cart will be ignored for overriding prices.
Hope this will be helpful.
December 14, 2014 at 7:09 am #10016sark
ParticipantTo make it dynamic ( override price for each item in cart separately ), you need to save the override product price in session with cart item key as session key using
woocommerce_add_to_cart
hook.by using these session values you can calculate correct Cart Total and make the altered price appear in the Order Item as well
February 25, 2016 at 4:13 am #10018lance-cleveland
ParticipantWith WooCommerce 2.5 I found this to be a 2-part process. The first step is to change the run-time display of pricing when added to the cart via the woocommerce_add_cart_item filter. The second part is to set the persistent session data which is read during checkout via the woocommerce_get_cart_item_from_session filter. This seems to be faster than hooking the calculate totals filters (such as woocommerce_before_calculate_totals) as they are run very frequently in WooCommerce.
More details here:
woocommerce change price while add to cartSeptember 28, 2016 at 2:25 am #10019tobros91
ParticipantThis is how i did it, first i add my custom price to cart_item_data witch can save custom data to cart items, then i use woocommerce_before_calculate_totals, loop the cart and add the previously added price.
function add_donation_to_cart() { $cart_item_data = array('price' => $_REQUEST['donate_amount']); $woocommerce->cart->add_to_cart( 5395, 1, '', array(), $cart_item_data); } add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' ); function add_custom_price( $cart ) { foreach ( $cart->cart_contents as $key => $value ) { $value['data']->price = $value['price']; } }
April 7, 2017 at 9:24 am #10020danyo
ParticipantFor eveeryone that got here from Google. The above is now deprecated as i found out updating to WooCommerce 3.0.1.
Instead of the above you now need to use
set_price
instead ofprice
Here is an example:
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']->set_price = $custom_price; } }
I hope this helps people in the future 🙂
April 10, 2017 at 12:06 pm #10023saran
ParticipantI have tried all above code samples and latest woocommerce 3.0 is not support any of the above example. Use below code and working perfectly for me.
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); } }
May 8, 2017 at 12:04 pm #10022mohd-jafar
ParticipantAfter release of woocommerce version 3.0.0 product price is update on add to cart using set_price($price) function. The example is given as below :
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); } } }
Many Thanks
July 11, 2017 at 9:05 am #10021sumon-cse-sust
ParticipantFor the WordPress and Woocommerce latest version,Please use like this
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' ); function add_custom_price( $cart_object ) { foreach ( $cart_object->cart_contents as $key => $value ) { $custom_price = 5; $value['data']->set_price($custom_price); } }
October 10, 2018 at 9:42 am #10017shrddha-patel
ParticipantYou can use the following
add_filter( 'woocommerce_cart_item_price', 'kd_custom_price_message' ); function kd_custom_price_message( $price ) { $textafter = ' USD'; return $price . $textafter; }
- AuthorPosts
- You must be logged in to reply to this topic.