באופן הרגיל, במוצרים עם וריאציות שיש להם מחיר מבצע, ווקומרס מראה רק את המחיר מבצע, בניגוד למוצרים רגילים שם מופיע גם המחיר המקורי עם קו חוצה, זה די מטריד בעיקר כאשר מפרסמים מבצע באתר, אבל במחיר לא רואים שום זכר למבצע, אז הנה קוד שיסדר את זה.
add_filter('woocommerce_get_price_html', 'elex_display_striked_out_price_for_variable', 200, 2);
function elex_display_striked_out_price_for_variable($price='', $product)
{
$reg_price = '';
if(!$product->is_on_sale()){
return $price;
}
if($product->is_type( 'variable' ))
{
$variations = $product->get_children();
$reg_prices = array();
$sale_prices = array();
foreach ($variations as $value) {
$single_variation=new WC_Product_Variation($value);
array_push($reg_prices, $single_variation->get_regular_price());
array_push($sale_prices, $single_variation->get_price());
}
sort($reg_prices);
sort($sale_prices);
$min_price = $reg_prices[0];
$max_price = $reg_prices[count($reg_prices)-1];
if($min_price == $max_price)
{
$reg_price = wc_price($min_price);
}
else
{
$reg_price = wc_format_price_range($min_price, $max_price);
}
$min_price = $sale_prices[0];
$max_price = $sale_prices[count($sale_prices)-1];
if($min_price == $max_price)
{
$sale_price = wc_price($min_price);
}
else
{
$sale_price = wc_format_price_range($min_price, $max_price);
}
$suffix = $product->get_price_suffix($price);
return wc_format_sale_price($reg_price, $sale_price).$suffix;
}
return $price;
}