رفتن به مطلب

امکان ثبت سفارش فقط از یک دسته بندی در هر تراکنش در ووکامرس


S@jj@D

پست های پیشنهاد شده

سلام و وقت بخیر به همه دوستان ارجمند؛

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

1- کاربر در مرحله اول اجازه اضافه کردن محصول از هر دسته بندی رو به سبد خرید داره.

2- اضافه کردن محصول های بعدی به سبد خرید با شرط قرار گرفتن در دسته بندی اولین محصول اضافه شده به سبد صورت میگیره. (اگر محصول اول از دسته بندی X بوده محصولات بعدی هم باید از دسته بندی X باشن ... اگر محصول اول از دسته بندی Y بوده محصولات بعدی هم باید از دسته بندی Y باشن و همینطور الی آخر ...)

3- در صورت عدم رعایت مرحله 2 پیغام خطایی ظاهر بشه با این مضمون که "شما در هر بار سفارش (در هر تراکنش) فقط اجازه سفارش از یک دسته بندی را دارید" (حالا این پیغام خطا میتونه در هنگام کلیک بر روی افزودن به سبد خرید به صورت پاپ آپ ظاهر بشه یا مثه پیغام خطاهای معمول ووکامرس در بالای صفحه ظاهر بشه)

4- در صورت رعایت مرحله 2 کاربر مشکلی برای ادامه کار و تسویه حساب نداشته باشه و سفارش به صورت کامل ثبت بشه!

سپاس از شما.

لینک به ارسال
  • 2 هفته بعد...
در در ۱۳۹۶/۱/۱۰ ه‍.ش. at 18:35، مهدی گفته است :

سلام


http://stackoverflow.com/a/35072168

 

درود و سپاس از شما اما این تاپیک رو دیده بودم نه این جوابگوی مشکل من نیست!

لینک به ارسال

این رو تست کنید

function itl_is_product_the_same_cat( $valid, $product_id, $quantity ) {
    global $woocommerce;

    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        $_product 	  = $values['data'];
        $terms 		  = get_the_terms( $_product->id, 'product_cat' );
        $target_terms = get_the_terms( $product_id, 'product_cat' ); // get the current items

        foreach ( $terms as $term ) {
            $cat_ids[] = $term->term_id;  // get all the item categories in the cart
        }
        foreach ($target_terms as $term) {
            $target_cat_ids[] = $term->term_id; // get all the categories of the product
        }
    }

	if ( ! empty ( WC()->cart->get_cart() ) && $valid ) {
		$same_cat = array_intersect( $cat_ids, $target_cat_ids ); // check if they have the same category

		if ( count( $same_cat ) == 1 ) {
			wc_add_notice( 'You can only have 1 item per category in your cart', 'error' );
			return false;
		} else {
			return $valid;
		}
	} else {
		return $valid;
	}
}
add_filter( 'woocommerce_add_to_cart_validation', 'itl_is_product_the_same_cat', 10, 3 );

 

لینک به ارسال

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

لینک به ارسال

نه دیگه برطرف نشد! بنده عرض کردم میخام کاربر در هر تراکنش فقط از یک دسته بندی بتونه سفارش بده نه اینکه از هر دسته بندی یک آیتم فقط بتونه سفارش بده! کدی که شما دادین از هر دسته بندی یک آیتم فقط میتونه سفارش بده! من به صورت الگوریتم گفتم که مسئله روشن تر شه!

با مثال میگم این بار: فرض می کنیم یک دسته بندی داریم به نام "الف" و یک دسته بندی هم داریم به نام "ب"! کاربر برای اولین محصول میتونه از هر دو دسته بندی به سبد خریدش اضافه کنه! اما شرط ادامه خرید و تسویه حساب اینه که محصولات بعدی رو هم از همون دسته بندی انتخاب کنه! مثلا اگر محصول اول از دسته بندی "الف" بود محصولات بعدی هم از دسته بندی "الف" باشن و اگر محصول اول از دسته بندی "ب" بود محصولات بعدی هم از دسته بندی "ب" باشن! در غیر این صورت پیغام خطا ظاهر شه!

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...