صفحه پرداخت شبیه edd برای محصولات دانلودی در ووکامرس

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
سلام.

کافیه کد زیر رو تو فانکشن قالبتون بذارید تا برای محصولات مجازی و دانلودی صفحه پرداختتون شبیه افزونه edd بشه و فیلدهای اضافه مانند آدرس و .... حذف بشن .

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

کد:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );function custom_override_checkout_fields( $fields ) {	global $woocommerce;	$hasPhysicalProduct = false;	if ( ! empty( $woocommerce->cart->cart_contents ) ) {		// Cart is not empty, now loop through the cart 		$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 == false)	{					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;}
 
آخرین ویرایش توسط مدیر:

amir525

تازه وارد
ببخشید فانکیشن کجاست دقیقا؟؟؟

 
آخرین ویرایش توسط مدیر:

MahdiY

راهبر انجمن
منظور از فایل فانکشن اینه :

wp-content/themes/قالب شما/functions.php

اگر این فایل وجود ندارد آن را بسازید

 

onlinearchitect

تازه وارد
مرسی از توضیحاتتون

ولی متاسفانه جواااب نداد؟؟

 
آخرین ویرایش توسط مدیر:

amirrezajoon

تازه وارد
مرسی از توضیحاتتون

ولی متاسفانه جواااب نداد؟؟
آیا مطمئن هستید که درست انجام دادید تنظیمات رو...

اینجوری باید باشه

wp-content/thems/yourthem/funcations

اگر اشتباه نکنم اینه

دوست عزیز باید هنگام ثبت محصول مجازی و دانلود رو انتخاب کنید

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

 

onlinearchitect

تازه وارد
بله شما درست میگفتید....

ممممنون و سپاسگذارم

کلی وقت دنبال حل کردن این موضوع بودم....تا به امروز :53: :53:

 

jamshimi

کاربر عضو
سلام.

کافیه کد زیر رو تو فانکشن قالبتون بذارید تا برای محصولات مجازی و دانلودی صفحه پرداختتون شبیه افزونه edd بشه و فیلدهای اضافه مانند آدرس و .... حذف بشن .

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

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );function custom_override_checkout_fields( $fields ) { global $woocommerce; $hasPhysicalProduct = false; if ( ! empty( $woocommerce->cart->cart_contents ) ) { // Cart is not empty, now loop through the cart $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 == false) { 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;}
با تشکر از شما دوست عزیز

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

3yygb14aanlsvapf9mmz.png


 

Mohammad

مدیر انجمن
پرسنل مدیریت
برای فروشگاه هایی که هر دو روش رو دارن ، پیشنهاد نمیشه تغییر بدید

 

jamshimi

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

 

Mohammad

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

 

jamshimi

کاربر عضو
علتش اینه که افزونه های حذف فیلد روی کل فروشگاه اعمال میشن ، نه تنها روی محصولات دانلودی... اینطوری برای محصولات فیزیکی به مشکل می خورید
خوب من الان تست کردم دیدم که تنها برا محصولات دانلودی ادرس حذف شده وبرا فیزیکی اون فیلدهایی که حذف شده بود وجود داره!
 

hannanstd.ir

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

توی توضیحاتشم نوشتم اگه فقط محصول دانلودی وجود داشته باشه حذف میکنه اگه حتی یه محصول فیزیکی داشته باشه حذف نمیکنه !

 

rjmb

تازه وارد
من این کد رو در اخرین خط تابع قرار دادم ولی خطا میده. دقیقا در کدام قسمت باید این کد رو قرار داد؟

 

lytner

تازه وارد
سلام مهندس.من این کد را وارد می کنم ولی متأسفانه با خطای 500 مواجه میشم.چطوری باید حلش کنم؟؟

با تشکر از زحمات شما

 

Mohammad

مدیر انجمن
پرسنل مدیریت
این کد رو باید در فانکشن وارد کنید و ربطی به ارور 500 نداره... مطمئنید درست طی مسیر کردید؟

 

rjmb

تازه وارد
من که کد رو میذارم کلا سایت بالا نمیاد و میگه خطا در خط فلان از function

 
بالا