Plugin Author
Andrew
(@krandrew)
Hi Gerry,
I don’t think that any plugin is capable of handling your specific case, including Stock Level Pricing. It would be much easier to simply write a function that will change the price for all products with a stock level of 0, rather than trying to adjust the Stock Level Pricing plugin, as this goes against the core logic of the plugin.
Here is a simple function that you can put inside your functions.php file to recalculate the price of all products with a stock level of 0:
// Add the function to adjust product price based on 0 stock level
function custom_adjust_price_based_on_stock($price, $product) {
// Get the regular price of the product
$regular_price = $product->get_regular_price();
// Get the stock quantity of the product
$stock_quantity = $product->get_stock_quantity();
// Check if the stock quantity is 0
if ($stock_quantity === 0) {
// Calculate the new price based on the given formula
$adjusted_price = $regular_price + 50 + ($regular_price * 0.35) + 20;
return $adjusted_price;
}
// If stock quantity is greater than 0, return the regular price
return $regular_price;
}
// Hook into WooCommerce to apply the custom price adjustment
add_filter('woocommerce_product_get_price', 'custom_adjust_price_based_on_stock', 10, 2);
add_filter('woocommerce_product_variation_get_price', 'custom_adjust_price_based_on_stock', 10, 2);
// Ensure the custom price adjustment is applied to product variations as well
add_filter('woocommerce_variation_prices_price', 'custom_adjust_price_based_on_stock', 10, 2);
add_filter('woocommerce_variation_prices_regular_price', 'custom_adjust_price_based_on_stock', 10, 2);
Of course, it’s pretty basic, but it does the job. It would get a bit more complicated if you want to consider the sale price as well, or make it compatible with other plugins that may adjust the price (other than simply retrieving the regular price and making calculations).
Hi, Andrew,
Much appreciated your reply.
The function you suggested greatly helped to solve my problem, (FYI. I added ( “$stock_quantity === null”) after($stock_quantity === 0).
Regards
Gerry