- 상태
- 해결됨
- 보고된 제품
- 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 );