WPML
الحالة
محلولة
أُبلغ عنها لـ
WPML Multilingual & Multicurrency for WooCommerce 5.5.1
تم حلها في
WooCommerce Multilingual & Multicurrency 5.5.2
وسوم الموضوع
Bug, Compatibility, WCML

نظرة عامة على المشكلة

عندما يكون لديك حجز يتضمن أشخاصاً ويوجد أكثر من 1 شخص للحجز، لن يتم ضبط التوفر بشكل صحيح مما يؤدي إلى عرض فترات متاحة خاطئة للفترة الزمنية المتاحة.

حل بديل مؤقت

يعمل مطورونا على إصلاح ذلك. في الوقت الحالي، يمكنك العودة إلى الإصدار WCML 5.5.0 أو يمكنك تصحيح الكود بالانتقال إلى /wp-content/plugins/woocommerce-multilingual/compatibility/WcBookings/class-wcml-bookings.php
عدّل الكود من:

			$booking_order_ids = [];
			array_walk( $existing_bookings, function ( WC_Booking $booking ) use ( &$booking_order_ids ) {
				/* @phpstan-ignore-next-line */
				$booking_order_ids[] = $booking->get_order_id();
			} );
			$unique_ids = array_unique( $booking_order_ids ); // when blocked, we don't want each N-language variation to occupy one slot

			return count( $unique_ids );

إلى:
			$booking_person_counts_by_order = [];

			foreach ( $existing_bookings as $booking ) {
				/** @var WC_Booking $booking */
				$order_id = $booking->get_order_id();

				// Skip if already counted this order ID (to avoid double-counting translations)
				if ( isset( $booking_person_counts_by_order[ $order_id ] ) ) {
					continue;
				}

				// Get total persons (sum of all person types for this booking)
				$person_counts = array_sum( $booking->get_person_counts() );

				// Store count by order ID
				$booking_person_counts_by_order[ $order_id ] = $person_counts;
			}

// Return total number of persons across unique orders
			return array_sum( $booking_person_counts_by_order );

جميع المشاكل المعروفة →