WooCommerce - Adding a custom price to each product in cart
Update: For WooCommerce 3.0+ Change cart item prices in WooCommerce version 3.0
You can use woocommerce_before_calculate_totals
hook to customize your cart items prices.
You can define $framed_price
variables as global in your function, this way.
This is the code:
// getting your additional price outside the function (making any conditional calculations)
$framed_price = 20;
add_action( 'woocommerce_before_calculate_totals', 'add_custom_total_price', 10 );
function add_custom_total_price( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
global $framed_price;
foreach ( $cart_object->get_cart() as $key => $value ) {
$value['data']->price += $framed_price;
}
}
Or get your custom price inside the hooked function (optionally, depending on how you get your custom price):
add_action( 'woocommerce_before_calculate_totals', 'add_custom_total_price', 10 );
function add_custom_total_price( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$framed_price = 20;
foreach ( $cart_object->get_cart() as $key => $value ) {
$value['data']->price += $framed_price;
}
}
This code is tested and working.
Naturally this code goes on function.php file of your active child theme (or theme) or in any plugin file.
Reference: WooCommerce Cart - Dynamic Price variable pass into custom price hook
Habib Rehman
High level Compiler loves Sublime editor, Proficient with php codeigniter. Likes to stay at the backend whether its dawn or dust
Updated on June 04, 2022Comments
-
Habib Rehman almost 2 years
I would like to update the price of products adding a custom price in cart using this simple piece of code
update_post_meta( $product->id, '_regular_price', $frame_price_added);
.Note: what I'm trying to achieve is to add this custom price to each product in cart.
I have try to get
$frame_price_added
this way:$frame_price = $res['_number_field'][0]; $frame_price_added = $product->price + $frame_price;
Here
$product->price
is price coming from woocomerce product and$frame_price
is coming from my newly added price.I was wondering how do I associate this new price to cart, because it doesn't work.
I have tried using
update_post_meta( $product->id, '_price', $frame_price_added);
and when page is refreshed it adds and stores the custom price to the product, and saved it.Any idea on how I can achieve this properly?
Thanks.
Edit: One more thing… I have searched a function that can being called on add to cart and i didn't find any thing, and also an action hook being called on
woocommerce_template_single_add_to_cart
which hadwoocommerce_single_product_summary
but it didn't find any function. -
Sona about 7 yearshow i can get the $framed_price from my form ? i don't want it to be static
-
LoicTheAztec about 7 years@sona what do you exactly mean/want? what form, what field?