IN WooCommerce, I need to multiply all product prices by a number. So I have used the following (via a plugin):
add_filter('woocommerce_get_regular_price', array( $this, 'my_custom_price'), 99);
add_filter('woocommerce_get_price', array( $this, 'my_custom_price'), 99);
function my_custom_price( $original_price ) {
global $post, $woocommerce;
//Logic for calculating the new price here
$new_price = $original_price * 2;
//Return the new price (this is the price that will be used everywhere in the store)
return $new_price;
}
But, that doesn't work for variation products. I have tried the following hooks with no luck:
add_filter('woocommerce_get_variation_regular_price', array( $this, 'my_custom_price'), 99);
add_filter('woocommerce_get_variation_price', array( $this, 'my_custom_price'), 99);
The only one that works half way is this one:
add_filter('woocommerce_variation_prices_price', array( $this, 'my_custom_price'), 99);
But that just changed the overall price, not the selected variation price. See the image below, price is BsF. 200 and the overall price is right, 200 x 2 = 400, but the variation price when selected still shows 200:
Note: I need it to actually change, so display html hooks wont work.
Is there anything I'm missing, or something wrong?
excuse my English, I do not know much ... I am implementing this code, but in my case what I need is to divide the price of the product in 12 installments .. This works in both variable and simple products .. However the mini cart, cart page and checkout is as if it were returning to divide the price into 12.. This is the code that I am adding.
1) Plugin version with a constructor function:
The hooks that you are using are deprecated in WooCommerce 3+
To make it work for all products prices, including variations prices, you should use this:
The code tested and perfectly works (only) in WooCommerce 3+.
2) For theme version:
functions.php
file on active child theme (or active theme):Tested and works on woocommerce 3+
For products in sale you have those hooks:
woocommerce_product_get_sale_price
(Simple, grouped and external products)woocommerce_variation_prices_sale_price
(Variable products (min-max))woocommerce_variation_prices_sale_price
(Products variations)Cached prices and woocommerce 3:
The 3 filters hooks involved in variations cached prices are:
woocommerce_variation_prices_price
woocommerce_variation_prices_regular_price
woocommerce_variation_prices_sale_price
So performances will stay boosted (Thanks to Matthew Clark that pointed this better way)
See: Caching and dynamic pricing – upcoming changes to the get_variation_prices method