0

钩子如何woocommerce_booking_form_get_posted_data工作以及如何使用它来更改购物车中每个产品的预订持续时间?在互联网上找不到任何关于它的信息。

你能在这个钩子上重新计算持续时间吗?什么时候开除?更改此挂钩上的持续时间是否会重新计算购物车中产品的价格以及在继续下订单之后?任何有关它的信息将不胜感激!

4

1 回答 1

3

这是一个示例,将向您展示如何使用woocommerce_booking_form_get_posted_data过滤器挂钩在 Woocommerce 预订中进行持续时间更改:

add_filter( 'woocommerce_booking_form_get_posted_data', 'filter_booking_form_get_posted_data', 10, 3 );
function filter_booking_form_get_posted_data( $posted_data, $product, $duration_length ) {

    ## --- Settings :: New duration --- ##

    $new_start_date ='2018-05-08 00:00:00'; // new start date
    $new_duration = 6; // new duration
    $duration_unit = __('day', 'woocommerce'); // (if needed)

    ## --- Calculations and changes --- ##

    $day_time = 86400;
    $new_start_time = strtotime($new_start_date);
    $new_end_time   = $new_start_time + ( $day_time * $new_duration ) - 1;

    $posted_data['_year']       = date('Y', $new_start_time);
    $posted_data['_month']      = date('n', $new_start_time);
    $posted_data['_day']        = date('j', $new_start_time);

    $posted_data['_date']       = date('Y-n-j', $new_start_time);
    $posted_data['date']        = date('M j, Y', $new_start_time);

    $posted_data['_start_date'] = $new_start_time;
    $posted_data['_end_date']   = $new_end_time;

    $posted_data['_duration']   = $new_duration;
    $posted_data['duration']   = sprintf( _n( '%s day', '%s days', $new_duration, 'woocommerce' ), $new_duration );

    return $posted_data;
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。测试和工作。

但这不会改变价格,因为这需要以另一种方式和另一个钩子来完成。

于 2018-04-23T14:40:14.903 回答