Как woocommerce_booking_form_get_posted_data
Работа с крючками и как использовать ее для изменения длительности бронирования для каждого продукта уже в корзине? Не смог найти никакой информации об этом в интернете.
Можете ли вы сделать пересчет продолжительности на этом крючке? Когда это уволено? Будет ли изменение длительности на этом крючке пересчитывать цену товаров в корзине, а также после оформления заказа?
Любая информация об этом будет оценена!
Вот пример, который покажет вам, как вносить изменения в продолжительность бронирования в Woocommerce, используя woocommerce_booking_form_get_posted_data
крючок фильтра:
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 вашей активной дочерней темы (или активной темы). Проверено и работает.
Но это не изменит цену, так как это нужно сделать другим способом и другим способом.
Других решений пока нет …