edd auto discount to cart
مدت زمان تقریبی مطالعه: 2 دقیقه و 40 ثانیه

اعمال اتوماتیک کد تخفیف در سبد خرید افزونه edd

جزئیات

دسته بندی
منتشر شده در 1396/03/23
پسندها 1
بازدید 467
نظرات 2
منبع

توضیحات

در این آموزش خواهیم آموخت که چگونه می توانیم یک کد تخفیف رو به صورت اتوماتیک در سبد خرید کاربرانی که محصولی رو به سبد خرید خود اضافه می کنند اعمال کنیم.ویژگی که بصورت پیش فرض در افزونه Edd وجود ندارد و ما از طریق کد نویسی این ویژگی کاربردی و جذاب رو بهش اضافه خواهیم کرد.

فرض کنید شما دارید یک کتاب با موضوع ” افزایش عملکرد در محل کار ” ( یکی از ده ها جلد کتابی که استاد ژان بقوسیان نوشتن ) می فروشید و در کنار این کتاب فایل صوتی کتاب  و یا نسخه pdf رو هم بعنوان یک محصول مجزا قرار دادید و می خواهید برای هر فردی که همراه با کتاب افزایش عملکرد در محل کار، فایل صوتی یا نسخه pdf آن را نیز سفارش داد یک کد تخفیف بصورت اتوماتیک در سبد خرید اعمال شود.یک راهش این هست که شما افزونه discounts pro رو با قیمت ۸۹ دلار تهیه کنید ولی فعلا اول راه هستید و نمی خواهید هزینه بیشتری بپردازید.و راه دوم استفاده از دانش کدنویسی برای پیاده سازی این ویژگی کاربردی هست که شاید خیلی از کاربران به دنبال آن بودند.

گام اول: تعریف یک کد تخفیف

ابتدا یک کد تخفیف در بخش کدهای تخفیف افزونه edd تعریف کنید،فقط کد تخفیف و میزان کد تخفیف رو تعریف کنید کافی هست و نیازی به تعریف کردن دیگر شرایط نیست چون شرط ها رو خودمون کدنویسی خواهیم کرد.

گام دوم: تعریف یک تابع

تابع زیر هم می تونید به عنوان یک پلاگین جداگانه تعریف کنید و هم می تونید داخل فایل functions.php پوسته قرار بدید.

اگه موافقید بریم سراغ تابع:

 


/**
 * یک کد تخفیف ۲۰ % میخواهیم به سبد خرید اعمال شود
 *
 * بصورت اتوماتیک کد تخفیف رو اعمال خواهد کرد برای کسانی که به همراه کتاب، فایل صوتی یا نسخه pdf رو هم سفارش بدن
 *
 */
function edd_auto_apply_discounts() {

    /* کدها در این قسمت قرار خواهد گرفت */

}

add_action( 'edd_cart_items_before', 'edd_auto_apply_discounts' );

 

تعریف متغییرهای مورد نیاز

آیتم های موجود در سبد خرید رو بدست میاریم:


$cart_items = edd_get_cart_contents();

 

کد تخفیفی که قبلا تعریف کردیم رو داخل یه متغییر ذخیره می کنیم.بعدا بهش نیاز خواهیم داشت:


$discount_code = 'auto20'; // با کد تخفیفی که تعریف کردین جایگزین کنید

 

 

سه متغییر دیگر تعریف می کنیم و مقدار اولیه اونها رو برابر با false قرار می دهیم:


$discount_applies = $has_ketab = $has_voice = $has_pdf = false;

 

خب بنابراین الگوریتم یا منطق کدنویسی ما بصورت زیر خواهد بود:


// کتاب به همراه فایل صوتی
if ( $has_ketab && $has_voice ) {
 $discount_applies = true;
}
 
// کتاب به همراه pdf 
if ( $has_ketab && $has_pdf ) {
 $discount_applies = true;
}
 
if ( $discount_applies ) {
 // کدهایی که کد تخفیف رو به سبد خرید اعمال خواهند کرد
}

 

اما قبل اینکه ما در واقع بخواهیم کدهای بالا رو اجرا کنیم،نیاز داریم که یک حلقه برای آیتم های موجود در سبد خرید بنویسیم، تا بررسی کنه اگر متغییرهای has_ketab, has_voice, یا has_pdf در سبد خرید وجود داشتند یا شروطی که ما دوست داریم داشته باشند رو داشتند ( مثلا شرطی رو تعیین میکنیم که مثلا: اگر محصول داخل سبد خرید از یک دسته بندی خاص بود و یا یک برچسب خاصی رو داشت اون دستور رو اجرا کنه ) بیاد و مقدار اونها رو برابر با true قرار بده چون مقدار اولیه اونها رو ما برابر با false قرار داده بودیم.

 


if ( is_array( $cart_items ) ) {
	foreach ( $cart_items as $item ) {
		$post         = get_post( $item['id'] );
		$currentprice = get_post_meta( $post->ID, 'edd_price', true );

		// اگر id محصول برابر با عدد ۲۳۷۱ بود مقدار $has_ketab را برابر با true قرار بده.
		if ( $item['id'] == 2371 ) {
			$has_ketab = true;
		}

		// اگر آیتم موجود در سبد خرید جزء دسته بندی Ketab Voice بود مقدار $has_voice را برابر با true قرار بده.
		if ( has_term( 'Ketab Voice', 'download_category', $post ) ) {
			$has_voice = true;
		}

		// اگر آیتم موجود در سبد خرید برچسب Ketab pdf رو داشت و قیمتش هم از صفر بیشتر بود (یعنی بصورت رایگان نبود) مقدار $has_pdf را برابر با true قرار بده.
		if ( has_term( 'Ketab pdf', 'download_tag', $post ) && $currentprice > 0 ) {
			$has_pdf = true;
		}
	}
}
}

 

اگر شروط ما صدق میکنه کد تخفیف رو اعمال کن و گرنه کد تخفیف رو به سبد خرید کاربر اعمال نکن:


// کتاب به همراه فایل صوتی
if ( $has_ketab && $has_voice ) {
	$discount_applies = true;
}

// کتاب به همراه pdf 
if ( $has_ketab && $has_pdf ) {
	$discount_applies = true;
}

if ( $discount_applies ) {
	edd_set_cart_discount( $discount_code );
} else {
	edd_unset_cart_discount( $discount_code );
}

بنابراین اگر شرط ما صدق کنه از

edd_set_cart_discount( $discount_code )

برای اعمال کد تخفیف استفاده می کنیم.اگر هم شرط ما صدق نکنه از

edd_unset_cart_discount( $discount_code )

برای حذف کد تخفیف از سبد خرید استفاده می کنیم.

نکته: اطمینان حاصل کنید که افزونه Edd شما به آخرین نسخه بروزرسانی شده باشد و نسخه آن از ۲٫۶٫۷ بالاتر باشد.چرا که باگ تابع unset رفع شده.

 

مثال دیگری از اعمال کد تخفیف بر مبنای تعداد آیتم های موجود در سبد خرید:

در این مثال ما کد تخفیف رو به صورت اتوماتیک اعمال خواهیم کرد اگر تعداد آیتم های موجود در سبد خرید برابر یا بیشتر از ۳ مورد باشد.کدهای کامل این مثال رو در زیر می تونید ببینید.


function edd_auto_apply_discounts() {
	$cart_items       = edd_get_cart_contents();
	$discount_code    = 'auto20'; // به کد تخفیف دلخواه خودتون که قبلا در بخش کدهای تخفیف تعریف کردین تغییر بدین
	$discount_applies = false;
	
	if ( is_array( $cart_items ) && count( $cart_items ) >= 3 ) {
		$discount_applies = true;
	}
	
	if ( $discount_applies ) {
		edd_set_cart_discount( $discount_code );
	} else {
		edd_unset_cart_discount( $discount_code );
	}
}

add_action( 'edd_cart_items_before', 'edd_auto_apply_discounts' );

 

شما می تونید از شروط متنوع و زیادی استفاده کنید برای اینکه کد تخفیف به صورت اتوماتیک به سبد خرید کاربر اعمال بشه.برای مثال می تونید تعیین کنید اگر کاربر به حساب کاربری خود لاگین کرده بود کد تخفیف اعمال بشه و یا تعیین کنید کد تخفیف برای نقش های کاربری خاصی اعمال بشه و شروط دیگری که بنا به نیازتون می تونید اونها رو تعیین کنید.

 

اگر سوالی،اشکالی دارید در قسمت نظرات همین پست از ما بپرسید.

برچسب ها

درباره نویسنده

مطالب مرتبط

نظرات

  1. مهدی
    مهدی

    با سلام . من یک افزونه میخواستم که بتونه یک کپن تخفیف پس از خرید محصول به مشتری بده تا مشتری بتونه از اون در خرید بعدی استفاده کنه (مثلا به مدت ۱ ماه و تنها ۱ بار).
    آیا همچین افزونه ای هست یا اگر نیست و بخواهید شخصی سازی کنید چقدر هزینش میشه. فروشگاه من بر اساس افزونه EDD هست.میخواستم راهنمایی کنید. ارادتمند

    1. محمد حسینی
      محمد حسینی

      سلام با تشکر از دیدگاه شما دوست گرامی،برای این منظور افزونه ای وجود دارد که بعد از هر خرید می توانید تنظیم کنید کد تخفیف به مشتری ارائه شود،لینک افزونه تقدیم شما میگردد.این افزونه بصورت رایگان در دسترس می باشد:
      https://easydigitaldownloads.com/downloads/edd-purchase-rewards/

دیدگاه خود را بیان کنید

ایمیل شما نمایش داده نخواهد شد. بخش های مورد نیاز با * علامت گذاری شده اند.

This site uses Akismet to reduce spam. Learn how your comment data is processed.