Обновление способа доставки в зависимости от заполнения полей в WooCommerce
У меня в интернет-магазине существуют два стандартных способа доставки Flat Rate и Free Delivery. Я добавил плагин для доставки по расстоянию.
Таким образом, когда клиент при оформлении заказа заполняет поля "Город" и "Адрес", должны добавляться новые способы доставки. Но новых доставок не видно, пока не выберешь Flat Rate или Free Delivery.
Как я понимаю, у меня нет автоматического обновления способов доставки в зависимости от заполнения полей.
Далее, я использовал такой код:
add_action('wp_footer', 'woocommerce_custom_update_checkout', 50);
function woocommerce_custom_update_checkout() {
if (is_checkout()) {
?>
<script type="text/javascript">
jQuery( document ).ready(function( $ ) {
$('#billing_address_1').click(function(){
jQuery('body').trigger('update_checkout', { update_shipping_method: true });
});
});
</script>
<?php
}
}
Но пока я не нажму на заполненное поле второй раз, способ доставки не обновляется.
Можно ли подключить к этому коду AJAX, чтобы результат был виден сразу, дабы не нажимать на заполненное поле дважды?
Ответы (2 шт):
вы можете попробовать вот этот вариант, просто добавив класс к враперу через который woocommerce будет отслеживать изменение в поле
add_filter( 'woocommerce_checkout_fields' , 'trigger_update_checkout_on_change' );
function trigger_update_checkout_on_change( $fields ) {
$fields['billing']['billing_address_1']['class'][] = 'update_totals_on_change';
return $fields;
}
или же изменить ивент с click на change
add_action('wp_footer', 'woocommerce_custom_update_checkout', 50);
function woocommerce_custom_update_checkout() {
if (is_checkout()) {
?>
<script type="text/javascript">
jQuery( document ).ready(function( $ ) {
$('#billing_address_1').change(function(){
jQuery('body').trigger('update_checkout', { update_shipping_method: true });
});
});
</script>
<?php
}
}