首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果部分预订了日,将partially_book_days更改为fully_booked_days

如果部分预订了日,将partially_book_days更改为fully_booked_days
EN

Stack Overflow用户
提问于 2018-10-04 04:36:11
回答 1查看 395关注 0票数 0

我无法隔离钩子使partial_booked日更改为fully_booked,一旦客户为那天下订单.我只想每天只允许一次预订,但是必须有选择地为start_time选择一天中的任何一个小时(上午8点到晚上9点)。

我已经在产品编辑器中尝试过几个可用性设置,即使使用优先级来选择多个小时块或使用一个缓冲区,一旦客户选择要预订的时间,也无法选择创建fully_booked的数据采集器输出。(我们在送货,一天只能送一次.但是必须有一个时间来选择什么时候交付,这样我们就不能让产品的可用性整天变得“可选”)。

我尝试过的:

代码语言:javascript
复制
$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' .... );

(这在前端运行得很好,但是如果时间还在的话,数据报警器仍然允许点击事件),所以我当然试过了:

代码语言:javascript
复制
$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 >a div)变成了明亮的红色。但我仍然有讨厌的点击可用。

因此,接下来我尝试:使用大约十几种不同的方式编写一些内联javascript,每次我都尝试使用.addClass(),甚至.replace(regex),希望td锚能够满足我删除bookable类的请求。结果:不!

如果我能取消可预订的课程,那我就可以走了。我们只是不想让任何人选择一天,如果另一个客户已经预订了任何一段时间(最少4小时)。

希望事情就像这样简单:

代码语言:javascript
复制
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'],
    );
}
EN

回答 1

Stack Overflow用户

发布于 2018-11-09 19:46:53

这是解决办法。

代码语言:javascript
复制
   /**
   * 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 );
}

}  

然后为事件定制消息:

代码语言:javascript
复制
/**
 * 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;
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52639089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档