Documentation

Ajoutez ces extraits de code au fichier functions.php de votre thème enfant, ou utilisez une extension comme Code snippets. N’ajoutez pas de code directement au fichier functions.php de votre thème parent car il serait écrasé par les mises à jour. Personnalisez les textes en rouge comme bon vous semble.

S’assurer que tous les produits du panier ont la ou les même(s) date(s)

add_action( 'woocommerce_check_cart_items', 'wceb_check_dates_in_cart', 10, 1 );

function wceb_check_dates_in_cart() {

    $i = 0;
    foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {

        if ( isset( $values['_booking_start_date'] ) ) {

            $start = $values['_booking_start_date'];
            $end = isset( $values['_booking_end_date'] ) ? $values['_booking_end_date'] : $start;

            if ( $i === 0 ) {

                $start_date = $start;
                $end_date = $end;

            } else if ( $start !== $start_date || $end !== $end_date ) {

                wc_add_notice( __( 'You must select the same dates for all your items.', 'woocommerce-easy-booking-system' ), 'error' );
                return false;

            }

            $i++;

        }
    }

    return true;

}

Afficher la durée de réservation dans le panier

add_filter( 'woocommerce_get_item_data', 'wceb_get_custom_item_data', 10, 2 );

function wceb_get_custom_item_data( $other_data, $cart_item ) {

    if ( isset( $cart_item['_booking_duration'] ) && ! empty ( $cart_item['_booking_duration'] ) ) {

        $booking_mode = get_option( 'wceb_booking_mode' );
        $unit = $booking_mode === 'nights' ? _n( 'night', 'nights', $cart_item['_booking_duration'], 'woocommerce-easy-booking-system' ) : _n( 'day', 'days', $cart_item['_booking_duration'], 'woocommerce-easy-booking-system' );

        $other_data[] = array(
            'name' => 'Booking duration',
            'value' => esc_html( $cart_item['_booking_duration'] . ' ' . $unit )
        );

    }

    return $other_data;

}

Afficher la durée de réservation dans la commande

add_action( 'woocommerce_checkout_create_order_line_item', 'wceb_add_custom_order_item_meta', 10, 3 );

function wceb_add_custom_order_item_meta( $item, $cart_item_key, $values ) {

    if ( ! empty( $values['_booking_duration'] ) ) {
        $item->add_meta_data( '_booking_duration', absint( $values['_booking_duration'] ) );
    }

}

add_filter( 'easy_booking_display_item_meta', 'wceb_display_custom_order_item_meta', 10, 2 );

function wceb_display_custom_order_item_meta( $meta_data, $item ) {

    $booking_duration = $item->get_meta( '_booking_duration' );

    if ( isset( $booking_duration ) && ! empty( $booking_duration ) ) {

        $booking_mode = get_option( 'wceb_booking_mode' );
        $unit = $booking_mode === 'nights' ? _n( 'night', 'nights', $booking_duration, 'woocommerce-easy-booking-system' ) : _n( 'day', 'days', $booking_duration, 'woocommerce-easy-booking-system' );

        $meta_data[] = array(
            'display_key'   => esc_html( 'Booking duration' ),
            'display_value' => esc_html( $booking_duration . ' ' . $unit )
        );

    }

    return $meta_data;

}