شخصیسازی بج تخفیف یا حراج در ووکامرس (Customize Sale Badge)
با فیلتر `woocommerce_sale_flash` درصد اختلاف قیمت عادی و حراج را محاسبه کرده و در بج چاپ کنید.
مشخصات فنی و شناسنامه کد (Code Information)
بازبینی: 1405/06/29<?php
/**
* نمایش درصد واقعی تخفیف به صورت پویا درون بج حراج محصولات ووکامرس
*/
function bisco_custom_sale_percentage_badge( $html, $post, $product ) {
if ( ! $product->is_on_sale() ) {
return $html;
}
$regular_price = (float) $product->get_regular_price();
$sale_price = (float) $product->get_sale_price();
if ( $regular_price > 0 && $sale_price > 0 ) {
$percentage = round( ( ( $regular_price - $sale_price ) / $regular_price ) * 100 );
return '<span class="onsale bisco-sale-badge">' . esc_html( $percentage ) . '٪ تخفیف</span>';
}
return '<span class="onsale">حراج ویژه</span>';
}
add_filter( 'woocommerce_sale_flash', 'bisco_custom_sale_percentage_badge', 20, 3 );
کد را کجا قرار دهیم؟ (Placement Guide)
کد را در functions.php قرار داده و در صورت نیاز با CSS ظاهر کلاس .bisco-sale-badge را زیبا کنید.
این کد چگونه کار میکند؟ (How it Works)
اختلاف قیمت فروش فوقالعاده با قیمت اصلی به درصد تبدیل شده و به عنوان خروجی بج حراج HTML به قالب تحویل میگردد.
چه زمانی از این کد استفاده کنیم؟ (Use Cases)
در تمام فروشگاههای آنلاین برای ترغیب خریدار با درصد واقعی تخفیفها.
چه زمانی نباید از این کد استفاده کنیم؟ (Anti-patterns)
در صورتی که محصولات تنوع زیادی دارند و ترجیح میدهید یک عبارت ثابت بماند.
پیشنیازهای اجرا
محصول با قیمت اصلی و قیمت حراج تعریف شده باشد.
نحوه تست و اطمینان از عملکرد
برای یک محصول قیمت عادی ۱۰۰ هزار تومان و فروش فوقالعاده ۷۰ هزار تومان بگذارید؛ بج تخفیف عبارت «۳۰٪ تخفیف» را نشان میدهد.
نحوه بازگردانی سریع (Rollback)
فیلتر را حذف کنید.
خطاهای رایج و راهحل رفع
تقسیم بر صفر در صورتی که قیمت اصلی وارد نشده باشد (کد ما شرط `$regular_price > 0` را کنترل کرده است).
ملاحظات و نکات امنیتی
خروجی درصد با esc_html فرار داده شده است.
تاثیر بر سرعت و پرفورمنس
یک محاسبه ریاضی بسیار سبک در حافظه.