WPML
Status
Gelöst
Gemeldet für
WPML Multilingual & Multicurrency for WooCommerce 5.5.1
Gelöst in
WooCommerce Multilingual & Multicurrency 5.5.2
Themen-Tags
Bug, Compatibility, WCML

Übersicht über das Problem

Wenn Sie eine Buchung mit Personen haben und es mehr als 1 Person für die Buchung gibt, wird die Verfügbarkeit nicht korrekt angepasst, was dazu führt, dass für das verfügbare Zeitfenster falsche verfügbare Plätze angezeigt werden.

Problemumgehung

Unsere Entwickler arbeiten an einer Lösung. In der Zwischenzeit können Sie zu WCML 5.5.0 zurückkehren oder den Code patchen, indem Sie zu /wp-content/plugins/woocommerce-multilingual/compatibility/WcBookings/class-wcml-bookings.php gehen.
Ändern Sie den Code von:

			$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 );

in:
			$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 );

Alle bekannten Probleme →