Intereting Posts
Что такое экземпляр wordpress Сохранить выбранную таксономию Текст текста, а не значение Вход в боковую панель: как я могу получить имя пользователя после «Добро пожаловать»? Пользовательский запрос Woocommerce для фильтрации продуктов Код работает только каждый раз за его запуск Изменить add_filter на основе Ajax требуется один тег для каждого сообщения Как проверить уникальность префикса плагина? показать список последних комментариев для каждого сообщения в цикле WordPress, генерирующий 404 на .mp4 файле в папке темы Как я могу запрашивать сообщения из нескольких ролей? Я пытаюсь создать пользовательскую версию функции wp_list_authors, которая включает пользовательские типы сообщений Изменить, где ссылки на навигационную панель? Если файл существует с именем slug страницы, покажите изображение еще ничего Как получить или узнать пулю home.php

Woocommerce: обновить поля через Ajax после того, как выбран способ доставки

Я успешно добавил в мое окно условие условного поля, используя следующий код:

add_filter('woocommerce_after_order_notes', 'modify_checkout_fields'); function modify_checkout_fields($checkout) { global $woocommerce; chosen_methods = WC()->session->get( 'chosen_shipping_methods' ); if ( in_array('flexible_shipping_3_6', $chosen_methods) or in_array('free_shipping:5', $chosen_methods) ) { echo '<div id="collect_account_num">'; woocommerce_form_field( 'collect_account_num', array( 'type' => 'text', 'class' => array('collect_account_num form-row-wide'), 'label' => __('Collect Account #'), 'placeholder' => __('Required if shipping via Collect'), 'required' => true, ), $checkout->get_value( 'collect_account_num' )); echo '</div>'; } } 

Однако это поле (существование которого зависит от того, какие методы доставки выбраны) не появляется или не исчезает, пока я не перезагружу страницу.

Когда я выбираю новый метод доставки, разделы доставки и оплаты автоматически обновляются через AJAX. Я хотел бы обновить поля проверки, используя этот же механизм.

Как только будет выбран новый метод доставки, я хотел бы обновить поля проверки через AJAX. Как я могу это сделать?

Лучше всего я могу сказать, мне нужно что-то сделать с update_order_review но я не уверен, как это сделать.

Я смог решить / обход, добавив следующий код:

 } else { echo '<div id="collect_account_num">'; woocommerce_form_field( 'collect_account_num', array( 'type' => 'text', 'class' => array('collect_account_num form-row-wide'), 'label' => __('Collect Account #'), 'placeholder' => __('Required if shipping via Collect'), 'required' => false, ), $checkout->get_value( 'collect_account_num' )); echo '</div>'; } 

Теперь, если выбрана отправка доставки, поле отображается и требуется, в противном случае оно отображается и не требуется ( 'required' => false ). Оказывается, это будет работать лучше для моих целей.