// Thay đổi vị trí giá mặt định WC, chỉ áp dụng cho sp biến thể
add_filter('woocommerce_get_price_html', 'custom_reverse_price_html_for_variations', 100, 2);
function custom_reverse_price_html_for_variations($price, $product) {
if ($product->is_type('variable')) {
// Lấy tất cả các biến thể của sản phẩm
$variations = $product->get_available_variations();
foreach ($variations as $variation) {
$variation_id = $variation['variation_id'];
$variation_product = wc_get_product($variation_id);
// Kiểm tra nếu biến thể có giá sale
if ($variation_product->is_on_sale()) {
$regular_price = wc_price($variation_product->get_regular_price());
$sale_price = wc_price($variation_product->get_sale_price());
return sprintf('<ins>%s</ins> <del>%s</del>', $sale_price, $regular_price);
}
}
}
// Trả về giá gốc nếu không có biến thể nào có giá sale
return $price;
}
// Mã này bao gồm single product
add_filter('woocommerce_get_price_html', 'custom_reverse_price_html', 100, 2);
function custom_reverse_price_html($price, $product) {
if ($product->is_type('variable')) {
// Nếu sản phẩm là biến thể, lấy giá từ các biến thể
$variations = $product->get_available_variations();
foreach ($variations as $variation) {
$variation_id = $variation['variation_id'];
$variation_product = wc_get_product($variation_id);
if ($variation_product->is_on_sale()) {
$regular_price = wc_price($variation_product->get_regular_price());
$sale_price = wc_price($variation_product->get_sale_price());
return sprintf('<ins>%s</ins> <del>%s</del>', $sale_price, $regular_price);
}
}
} elseif ($product->is_on_sale() && $product->get_regular_price() && $product->get_sale_price()) {
// Single product
$regular_price = wc_price($product->get_regular_price());
$sale_price = wc_price($product->get_sale_price());
$price = sprintf('<ins>%s</ins> <del>%s</del>', $sale_price, $regular_price);
} else {
// Log nếu sản phẩm không có giá sale
error_log('Product not on sale: ' . $product->get_name());
}
return $price;
}