如果部分预订天数

时间:2018-10-04 04:36:11

标签: ajax datepicker woocommerce-bookings

一旦客户下了订单,我就无法将一天的部分预订日期更改为完全预订...我想每天只允许一个预订,但必须有选择任何小时的选项起始时间(上午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定位符能够满足我删除{{1} }类。结果:娜达!

如果我可以取消可预订的课程,那我很好。如果另一位客户预订了任何时间段(最小时间段为四个小时),我们只是不希望任何人选择一天。

希望如此简单:

bookable

1 个答案:

答案 0 :(得分:0)

这是解决方法。

   /**
   * 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;
}