У меня есть два способа доставки: самовывоз и фиксированная ставка. Я хочу изменить доступные даты в зависимости от способа доставки. Например, нет фиксированных ставок 31 мая 2020 г. и разрешено получение 31 мая 2020 г.
function iconic_modify_delivery_dates($available_dates) {
$chosen_shipping = $order ? iconic_get_order_shipping_method( $order ) : iconic_get_selected_shipping_method();
if ( ! $chosen_shipping ) {
return $available_dates;
}
if ( $chosen_shipping === 'local_pickup:3' ) {
return $available_dates;
}
if ( $chosen_shipping === 'flat_rate:1' ) {
echo "<script>console.log('Delivery Chosen');</script>";
if (($key = array_search('31 May 2020, Sunday', $available_dates)) !== false) {
unset($available_dates[$key]);
echo "<script>console.log('" . json_encode($available_dates) . "');</script>";
}
}
if ( $chosen_shipping === 'free_shipping:4' ) {
echo "<script>console.log('Delivery Chosen');</script>";
if (($key = array_search('31 May 2020, Sunday', $available_dates)) !== false) {
unset($available_dates[$key]);
echo "<script>console.log('" . json_encode($available_dates) . "');</script>";
}
}
return $available_dates;}add_filter( 'iconic_wds_available_dates', 'iconic_modify_delivery_dates');
Я пробовал это до сих пор, но это работает только при первой загрузке страницы. Переключение между способами доставки или выбор даты сбрасывает массив $ available_dates, и 31 мая 2020 можно снова выбрать.
Я не очень знаком с хуками и пытался связаться с разработчиком плагина.
Вы можете отфильтровать доступные для бронирования даты, используя фильтр iconic_wds_available_dates. Затем проверьте текущий выбранный способ доставки и удалите дату "не бронируется" из массива дат. https://docs.iconicwp.com/article/196-available-hooks-actions-and-filters
Это был его совет.
Как я могу гарантировать, что фильтр применяется каждый раз? Будем очень признательны за любые указатели!
31 мая 2020 г. нельзя выбрать при первой загрузке
Возврат к выбору при изменении способа доставки или выборе любой даты