حذف فیلدهای غیرضروری از محصولات دانلودی ووکامرس

حذف فیلدهای غیرضروری از محصولات دانلودی ووکامرس

سلام . یکی از دلایلی که معمولا از Easy Digital Downloads برای فروش محصولات مجازی استفاده میکنیم ساده بودن فرایند خرید است . یعنی صرف نظر از کارهایی که شما بعنوان مدیر سایت باید انجام بدید، Frontend و رابط کاربری ایزی دیجیتال دانلود هم بسیار کاربر پسند تر هست . چون مشتری خیلی راحت محصولشو به سبد خرید اضافه میکنه و بعدش با پر کردن فیلد نام و ایمیل به صفحه پرداخت هدایت میشه و بعد از پرداخت هم محصولشو دانلود میکنه.

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

خب ابتدا به قسمت زیر مراجعه کنید:

مدیریت وردپرس >> ووکامرس >> پیکربندی >> محصولات >> محصولات دانلودی .

از قسمت محدودیت های دسترسی، تیک “دانلودها نیازمند ورود هستند” رو بردارید و برعکسش تیک “دسترسی به محصولات دانلودشدنی بعد از پرداخت” رو بزنید.

حالا هم کد زیر رو داخل functions.php قالبتون و خط آخر قرار بدید و تمام. البته اگه خط آخر کد های فانکشنتون عبارت <؟ وجود داشت باید اول این عبارت رو حذف کنید و بعد کدهای زیر رو قرار بدید. سعی کنید بعد قرار دادن کد های زیر فاصله یا space های اضافی رو از کدهای فانکشن مخصوصا خطوط آخر حذف کنید.

add_filter( 'woocommerce_checkout_fields' , 'WooCommerce_EDD_Checkout' );
function WooCommerce_EDD_Checkout( $fields ) {
	global $woocommerce;
	$hasPhysicalProduct = false;
	if ( ! empty( $woocommerce->cart->cart_contents ) ) {
		$cart = $woocommerce->cart->get_cart();
		foreach ( $cart as $key => $values ) {

			$_product = get_product( $values['variation_id'] ? $values['variation_id'] : $values['product_id'] );

			if ( ! empty( $_product ) && $_product->exists() && $values['quantity'] > 0 )
				if ($_product->virtual == 'no' && $_product->downloadable == 'no') {
						$hasPhysicalProduct = true;
						break;
				}
		}
	}

	if (!$hasPhysicalProduct)
	{
		//unset($fields['billing']['billing_last_name']);
		//unset($fields['billing']['billing_phone']);
		unset($fields['billing']['billing_address_1']);
		unset($fields['billing']['billing_address_2']);
		unset($fields['billing']['billing_company']);
		unset($fields['billing']['billing_city']);
		unset($fields['billing']['billing_postcode']);
		unset($fields['billing']['billing_country']);
		unset($fields['billing']['billing_state']);
	}
	
	return $fields;
}

توجه : اگه خواستید که فیلد شماره موبایل رو هم حذف کنید کافیه از ۴ خط مونده به آخر کد های بالا عبارت // رو حذف کنید. (آن ها را از حالت کامنت در بیاورید) اطلاعات بیشتر در مورد شخصی سازی فیلدهای تسویه حساب رو هم از لینک زیر مطالعه بفرمایید:

برای مشاهده لینک کلیک کنید.

Source : WebForest

12 thoughts on “حذف فیلدهای غیرضروری از محصولات دانلودی ووکامرس

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

    1. بله من مستندات را مشاهده کردم ولی برخی از فیلد ها مانند شهر ، کدپستی و محله در زمان سفارش یک محصول دانلودی حذف نمی شوند .
      میشه بیشتر راهنمایی کنید.

    2. مشکل کد php با افزونه Persian Woocommerce Shipping می باشد.

      امکانش هست که در حل این مشکل من را راهنمایی کنید.

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

نشانی ایمیل شما منتشر نخواهد شد.