roelbroersma / Havendienst

Het havendienst plaform, bootverhuur, pechhulp en watertaxi
0 stars 0 forks source link

Aanpassing bij de tijden #1

Open SvanR opened 2 months ago

SvanR commented 2 months ago

Morgen Roel,

Vraag voor fietsten: op het boeking pag onder de kalender zij je 2 tijden staan, 10.00 en 15.00. Is het mogelijk om daar van te maken 10.00 tot 13.00 en 15.00 tot 18.00 uur. Dan zien de mensen nog beter welke uren ze boeken. Ik heb zelf al even gekeken of ik dat kan aanpassen maar ik kan niets vinden.

Stef

roelbroersma commented 2 months ago

Hallo Stef,

Ik zie wat je bedoeld. Het gaat om een product met 'Vaste blokken van'. Daarbij zie je nu dit:

image

En je zou willen zien: image

Toch?

SvanR commented 2 months ago

Ja dat zou tot zijn

roelbroersma commented 2 months ago

Hi Stef, (I'll write this in English so everyone on the internet can enjoy this code)

I made a code snipped for WooCommerce Bookings, it changes the HTML output for fixed booking blocks:

function add_end_times_for_fixed_blocks ( $block_html, $available_blocks, $blocks, $product_object ) {
    // ONLY FOR FIXED BLOCKS, NOT CUSTOMER DEFINED BLOCKS
    if ($product_object->get_duration_type()!=='customer') {
        foreach ( $available_blocks as $block => $quantity ) {
            if ( $quantity['available'] > 0 ) {
                $block_duration         = $product_object->get_duration();
                $block_duration_unit    = $product_object->get_duration_unit();

                $start_time = $block;
                $end_time = strtotime( '+' . $block_duration . ' ' . $block_duration_unit, $start_time );
                if ( $quantity['booked'] ) {
                    $new_block_html .= '<li class="block" data-block="' . esc_attr( date( 'Hi', $block ) ) . '" data-remaining="' . esc_attr( $quantity['available'] ) . '" ><a href="#" data-value="' . get_time_as_iso8601( $block ) . '" data-remaining="' . sprintf( _n( '%d left', '%d left', $quantity['available'], 'woocommerce-bookings' ), absint( $quantity['available'] ) ) . '">' . date_i18n( wc_bookings_time_format(), $block ) . ' - ' . date_i18n( wc_bookings_time_format(), $end_time ) . ' <small class="booking-spaces-left">(' . sprintf( _n( '%d left', '%d left', $quantity['available'], 'woocommerce-bookings' ), absint( $quantity['available'] ) ) . ')</small></a></li>';
                } else {
                    $new_block_html .= '<li class="block" data-block="' . esc_attr( date( 'Hi', $block ) ) . '"><a href="#" data-value="' . get_time_as_iso8601( $block ) . '">' . date_i18n( wc_bookings_time_format(), $block ) . ' - ' . date_i18n( wc_bookings_time_format(), $end_time ) . '</a></li>';
                }
            }
        }
        return $new_block_html;
    }
    return $block_html;
}

add_filter( 'wc_bookings_get_time_slots_html', 'add_end_times_for_fixed_blocks', 10, 4);

This is the result: image

Controleer het alsjeblieft grondig (dus het hele proces incl. afrekenen) en ook even een ander product checken wat dit niet gebruikt. We willen namelijk niet dat mensen ergens vastlopen met afrekenen en we dat pas na een week doorhebben. Ik heb de change namelijk direct in productie opgenomen ;)