Измените частично_book_days на полностью_записанные_дни, если частично забронированный день - PullRequest
0 голосов
/ 04 октября 2018

Я не могу изолировать ловушку, чтобы заставить день с частичным бронированием изменить день на день с полным заказом, как только клиент разместит заказ на этот день ... Я хочу разрешить только одно бронирование в день, но должна быть возможность выбрать любой часдня для start_time (между 8 утра и 9 вечера).

Я пробовал несколько настроек доступности в редакторе продукта, и даже при использовании приоритетов для нескольких вариантов выбора часового блока или буфера нет возможности создать вывод средства выбора даты fully_booked после того, как клиент выберетчас они хотят забронировать.(Мы доставляем товар и можем доставить только один раз в день ... но должно быть время, чтобы выбрать время доставки, чтобы мы не могли сделать блок доступности продукта весь день "выбираемым".)

Что я пробовал:

$booking_form_params = array('ajax_url' => WC()->ajax_url(), 
'i18n_date_partially_booked' => __('This date is unavailable', 
                                'woocommerce-bookings'), 
@uses add_filter( 'booking_form_params' .... );

(это отлично работает на внешнем интерфейсе, но средство выбора даты по-прежнему позволяет щелкать событие, если осталось время) Так что, конечно, я пытался:

$htm .= '.single.single-product td.partial_booked[data-event="click"] *{ 
pointer-events: unset; cursor:not-allowed !important;
background: #c96259!important;}';
wp_register_style( 'codeoctober-entry-set', false );
wp_enqueue_style(   'codeoctober-entry-set' );
wp_add_inline_style( 'codeoctober-entry-set', $htm );
}
@using add_action( 'wp_footer', .... ); and add_action('wp_enqueue_scripts'....);

wp_enqueue_scripts прекрасно работает и заставляет все поле дня (td> div) календаря окрашиваться в приятный ярко-красный цвет ... Но у меня все еще есть этот противный щелчок.

Далее я попробовал: Какой-то встроенный javascript примерно с дюжиной различных мод, и каждый раз я пытался .removeClass, .addClass() или даже .replace(regex) в надежде, что якорь td будетвыполни мою просьбу удалить класс bookable.Результаты: нада!

Если бы я мог удалить забронированный класс, тогда мне пора.Мы просто не хотим, чтобы кто-либо выбирал день, если другой клиент забронировал какой-либо отрезок времени (минимальные блоки - четыре часа).

Хотелось бы, чтобы это было так просто:

add_filter( 'wc_bookings_date_picker_args', 'function-name');
function-name
{   $booked = 
        $wc_bookings_date_picker_args->booking_form->product->get_id() );

    return array(
        'partially_booked_days' => $booked['fully_booked_days'],
    );
}

1 Ответ

0 голосов
/ 09 ноября 2018

Вот обходной путь.

   /**
   * Use inline style to show booked whole day
   * woocommerce_booking_form_get_posted_data  
   * top:87vh;width:502%;z-index:9;box-shadow: 0 15px 20px rgba(0,0,0,.25);
   * @param string $end_date
   * @return array
   */
   add_action( 'wp_enqueue_scripts', 'codeoctober_inline_public_script' );  
function codeoctober_inline_public_script() 
{

$day_booked = true; //codeoctober_booking_day_booked_meta();
if( $day_booked == true ) {

$htm = ''; 
$htm .= '.single.single-product td.partial_booked[data-event="click"] *, .single.single-product td.partial_booked{-webkit-touch-callout: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none; pointer-events: none; cursor:not-allowed !important;background: #c96259!important;}';
wp_register_style( 'codeoctober-entry-set', false );
wp_enqueue_style(   'codeoctober-entry-set' );
wp_add_inline_style( 'codeoctober-entry-set', $htm );
}

}  

А затем сообщения, настроенные для события:

/**
 * Woo booking form notices
 * booking_formparams 
 * 
 * @param string $ajax inclusion
 * @return array
 */
add_filter( 'booking_form_params', 'codeoctober_change_partbooking_form_params' );
function codeoctober_change_partbooking_form_params( $booking_form_params ) {

$booking_form_params = array('ajax_url' => WC()->ajax_url(), 
'i18n_date_partially_booked' => __('This date is unavailable', 'woocommerce-bookings'), 
'i18n_start_date' => __('Choose a Start Date', 'woocommerce-bookings'), 
'i18n_end_date' => __('Choose an End Date', 'woocommerce-bookings'), 
'i18n_dates' => __('Dates', 'woocommerce-bookings'), 
'i18n_choose_options' => __('Please select the options for your booking above first', 'woocommerce-bookings'));
/*wp_localize_script('wc-bookings-booking-form', 'booking_form_params', 
    apply_filters('booking_form_params', $booking_form_params));
*/
return $booking_form_params;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...