Имеются радиокнопки:
add_action( 'woocommerce_before_checkout_billing_form', 'field_oplata' );
add_action( 'woocommerce_checkout_update_order_meta', 'save_field_oplata' );
function field_oplata( $checkout ){
woocommerce_form_field( 'contactmethod', array(
'type' => 'radio',
'required' => true,
'class' => array('oplata-field', 'form-row-wide'),
'label' => 'Выбирите способ оплаты: ',
'label_class' => 'oplata-label',
'options' => array(
'by_nall:1' => 'Оплата наличными',
'by_perevod:2' => 'Оплата банковским переводом',
'by_karta:3' => 'Оплата банковским картой'
)
), $checkout->get_value( 'contactmethod' ) );
}
function save_field_oplata( $order_id ){
if( !empty( $_POST['contactmethod'] ) )
update_post_meta( $order_id, 'contactmethod', sanitize_text_field( $_POST['contactmethod'] ) );
}
Задача состоит в том, чтобы при нажатии на "Оплата наличными", скрывалось поле допустим "Адрес" (billing_address_1)
Уже пол дня с этим мучаюсь помогите XD
Пробовал подключать вот этот скрипт:
jQuery( 'body' ).on('updated_checkout', function () {//говорим, что при обновлении формы checkout надо дёрнуть нашу функцию
var method = woocommerce_params.chosen_contactmethod;
jQuery( 'select.contactmethod, input[name^=contactmethod][type=radio]:checked, input[name^=contactmethod][type=hidden]' ).each( function( index, input ) {
method = jQuery( this ).val();
} );
switch (true) { //начинаем перебор вариантов и проверяем их
case (method.indexOf('by_nall:1') >= 0 ): //если наш метод Самовывоз будем выполнять этот участок кода
jQuery( '#billing_address_1_field, #billing_city_field').hide(); //Прячем адрес
if (jQuery('#billing_address_1').val() === ''){ //если клиент не авторизован или у него нет адреса, нам что-то надо передать,т.к. поле адрес обязательное
jQuery('#billing_address_1').attr('value', 'Самовывоз'); //передадим туда строку "самовывоз"
}
break;
case ( method.indexOf('by_karta:3') >= 0 ): // если наш метод доставки ПОчта России
jQuery( '#billing_address_1_field, #billing_city_field').show(); //Показываем все
break;
default: // во всех остальных случаях прячем Почтовый индекс
jQuery('#billing_postcode_field').hide();
jQuery( '#billing_address_1_field, #billing_address_2_field, #billing_state_name_field, #billing_city_field').show(); //Показываем всё кроме индекса
}
} );
Для подключения скрипта в functions.php использовал следующий код:
add_action( 'wp_enqueue_scripts', 'hide_fields_script' );
function hide_fields_script() {
wp_enqueue_script( 'hide_shipping_fields', get_template_directory_uri() . "/hide_shipping_fields.js", array( 'jquery' ), GENERATE_VERSION, true );
}