حذف گزینه ارسال با هزینه در صورت فعال بودن ارسال رایگان

BahramElf

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

در فروشگاه برای خرید های بالای 50000 تومان ارسال رایگان در نظر گرفتیم، مشکل اینجاست وقتی مجموع خرید کاربر بالای 50000 تومان میره و گزینه ارسال رایگان واسش فعال میشه، هنوز گزینه ارسال با هزینه هم نمایش داده میشه و کاربر میتونه این گزینه رو هم انتخاب کنه، چطور میشه تعریف کنیم در صورت فعال شدن ارسال رایگان گزینه ارسال با هزینه رو نمایش نده؟

You must be registered for see images attach


You must be registered for see images attach


 

navvab.sh

تازه وارد
دوست عزیز

برای این کار، کد زیر رو در آخر فایل functions.php قالبت بزار.

کد:
add_filter( 'woocommerce_package_rates', 'hide_shipping_when_free_is_available', 10, 2 );
function hide_shipping_when_free_is_available( $rates, $package ) {
  	if ( isset( $rates['free_shipping'] ) ) {
  		unset( $rates['flat_rate'] );
  		$free_shipping          = $rates['free_shipping'];
  		$rates                  = array();
  		$rates['free_shipping'] = $free_shipping;
	}
	return $rates;
}
 

BahramElf

کاربر عضو
در این لینک روش های مختلف برای انجام اینکار در ورژن های متفاوت ووکامرس معرفی شده



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

masoud_drug7089

تازه وارد
سلام

در فروشگاه برای خرید های بالای 50000 تومان ارسال رایگان در نظر گرفتیم، مشکل اینجاست وقتی مجموع خرید کاربر بالای 50000 تومان میره و گزینه ارسال رایگان واسش فعال میشه، هنوز گزینه ارسال با هزینه هم نمایش داده میشه و کاربر میتونه این گزینه رو هم انتخاب کنه، چطور میشه تعریف کنیم در صورت فعال شدن ارسال رایگان گزینه ارسال با هزینه رو نمایش نده؟

You must be registered for see images attach


You must be registered for see images attach
دوست عزیز سلام

امکانش هست نحوه فعال کردن این مورد را کامل توضیح دهید تا بتونم استفاده کنم؟

 

hadi500

تازه وارد
سلام

من هم به نحوه فعال کردن موارد بالا نیازمندم 

 

MahdiY

راهبر انجمن
دوست عزیز

برای این کار، کد زیر رو در آخر فایل functions.php قالبت بزار.

add_filter( 'woocommerce_package_rates', 'hide_shipping_when_free_is_available', 10, 2 );
function hide_shipping_when_free_is_available( $rates, $package ) {
if ( isset( $rates['free_shipping'] ) ) {
unset( $rates['flat_rate'] );
$free_shipping = $rates['free_shipping'];
$rates = array();
$rates['free_shipping'] = $free_shipping;
}
return $rates;
}

@hadi500 @masoud_drug7089

فایل functions.php قالب خودتون را باز کنید

در آخر فایل (قبل از علامت ?>) کد بالا را قرار دهید و فایل رو ذخیره کنید

 

masoud_drug7089

تازه وارد
من اضافه کردم ولی بازم بقیه موارد مثل پست سفارشی و پیشتاز قابل انتخاب هستند

 

MahdiY

راهبر انجمن
منظور همون فانکشن ووکامرس هست درسته؟
منظور فایل functions.php در پوشه قالبتون در مسیر wp-content/themes هستش

من اضافه کردم ولی بازم بقیه موارد مثل پست سفارشی و پیشتاز قابل انتخاب هستند
کد زیر را هم تست کنید

کد:
function my_hide_shipping_when_free_is_available( $rates ) {
	$free = array();
	foreach ( $rates as $rate_id => $rate ) {
		if ( 'free_shipping' === $rate->method_id )
			$free[ $rate_id ] = $rate;
			break;
		}
	
	return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );
 

masoud_drug7089

تازه وارد
در هر دو مورد 

هزینه های ارسال همگی فعال میشن

و کاربر خودش میتونه انتخاب کنه

گزینه حمل و نقل رایگان هم فعال میشه و انتخاب پیش فرض نیستش

 
بالا