
اضافه کردن قابلیت تخفیف خودکار روی اولین سفارش، یک اقدام جذاب و هوشمندانه برای ترغیب مشتری برای ثبت سفارش می باشد.
کد زیر بررسی میکند که آیا کاربر قبلاً سفارشی داشته یا خیر، و اگر نداشته و مبلغ سبد خرید به حد نصاب رسیده باشد، تخفیف را به صورت خودکار (بدون نیاز به وارد کردن کد تخفیف) اعمال میکند.
کد تخفیف خودکار اولین خرید
این کد را به انتهای فایل functions.php قالب خود اضافه کنید:
/**
* تخفیف خودکار برای اولین سفارش مشتری در ووکامرس
*/
add_action( 'woocommerce_cart_calculate_fees', 'farjad_first_order_discount', 10, 1 );
function farjad_first_order_discount( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
// --- تنظیمات ---
$discount_percentage = 10; // درصد تخفیف (مثلاً 10 درصد)
$minimum_amount = 500000; // حداقل مبلغ خرید به واحد پول سایت (مثلاً 500 هزار تومان)
$discount_label = 'هدیه اولین خرید شما';
// ----------------
// 1. بررسی لاگین بودن کاربر
if ( ! is_user_logged_in() ) return;
// 2. بررسی تعداد سفارشات کاربر
$current_user = wp_get_current_user();
$customer_orders = wc_get_orders( array(
'customer' => $current_user->ID,
'status' => array( 'wc-completed', 'wc-processing', 'wc-on-hold' ), // وضعیتهای معتبر سفارش
) );
// 3. اگر کاربر قبلاً سفارش نداشته باشد
if ( count( $customer_orders ) === 0 ) {
// 4. بررسی حداقل مبلغ سبد خرید
$cart_subtotal = $cart->subtotal;
if ( $cart_subtotal >= $minimum_amount ) {
// محاسبه مبلغ تخفیف
$discount_amount = ( $cart_subtotal * $discount_percentage ) / 100;
// اعمال تخفیف به سبد خرید (مقدار منفی برای کسر شدن)
$cart->add_fee( $discount_label, -$discount_amount );
}
}
}
نکات مهم درباره این کد:
حداقل مبلغ خرید: من مقدار $minimum_amount را روی 500,000 گذاشتم. اگر واحد پولی سایت شما تومان است، این یعنی ۵۰۰ هزار تومان. میتوانید آن را به عدد دلخواه تغییر دهید.
درصد تخفیف: مقدار $discount_percentage را میتوانید از ۱۰ به هر عدد دیگری تغییر دهید.
وضعیت سفارشات: کد بالا سفارشاتی که در حالت «در حال انجام»، «تکمیل شده» یا «در انتظار پرداخت» هستند را چک میکند تا مطمئن شود مشتری واقعاً اولین بار است که خرید میکند.
فقط کاربران عضو: توجه داشته باشید که این کد برای کاربران وارد شده (Logged-in) کار میکند؛ چون سیستم باید تاریخچه سفارشات فرد را چک کند. برای مشتریان مهمان (بدون اکانت)، چون سوابقی وجود ندارد، تخفیف اعمال نمیشود.
نمایش پیام اطلاعرسانی به مشتری
اگر دوست دارید در صفحه سبد خرید پیامی نمایش داده شود که “چون اولین خرید شماست، تخفیف گرفتید”، میتوانید از این کد مکمل هم استفاده کنید:
add_action( 'woocommerce_before_cart', 'farjad_show_first_order_notice' );
function farjad_show_first_order_notice() {
if ( is_user_logged_in() ) {
$customer_orders = wc_get_orders( array(
'customer' => get_current_user_id(),
'status' => array( 'wc-completed', 'wc-processing', 'wc-on-hold' ),
) );
if ( count( $customer_orders ) === 0 ) {
wc_print_notice( 'تبریک! به مناسبت اولین خرید، تخفیف ویژهای در سبد خرید برای شما لحاظ شده است.', 'notice' );
}
}
}