Добрый вечер!
Помогите, пожалуйста, никак не могу убрать 3 поля.
Вот сайт:
Для иллюстрации проблемы быстрее всего будет добавить 3 единицы этого товара в корзину:
Использовала код https://stackoverflow.com/questions...ased-on-shipping-method-in-woocommerce-3?rq=1 . это единственный, что применяет изменения без обновления страницы чекаута (по крайней мере другие работали только с обновлением страницы у меня).
он убрал billing_country_field (показала на скриншоте)
но поля:
billing_address_1_field
billing_city_field
billing_state_field
я смогла сделать необязательными только. Они никак не убираются. Хотя всё по аналогии с полем страны написано.
подчистила под себя, т.к. мне он нужен был только для одного метода доставки. вроде как ничего лишнего не снесла. вот какой код на данный момент:
Помогите, пожалуйста, никак не могу убрать 3 поля.
Вот сайт:
Кошик - Pacify
pacify.com.ua
Купити ароматизовану свічку у прозорій склянці 200мл - Pacify.com.ua
Ароматизована свічка з соєвого воску у прозорій склянці 200мл з дерев'яним гнітом купити на PACIFY. Краща ціна ₴ Оперативна доставка ✈ Гарантія якості ☑
pacify.com.ua
Использовала код https://stackoverflow.com/questions...ased-on-shipping-method-in-woocommerce-3?rq=1 . это единственный, что применяет изменения без обновления страницы чекаута (по крайней мере другие работали только с обновлением страницы у меня).
он убрал billing_country_field (показала на скриншоте)
но поля:
billing_address_1_field
billing_city_field
billing_state_field
я смогла сделать необязательными только. Они никак не убираются. Хотя всё по аналогии с полем страны написано.
подчистила под себя, т.к. мне он нужен был только для одного метода доставки. вроде как ничего лишнего не снесла. вот какой код на данный момент:
PHP:
// Conditional Show hide checkout fields based on chosen shipping methods
add_action( 'wp_footer', 'custom_checkout_field_script' );
function custom_checkout_field_script() {
// HERE your shipping methods rate IDs
$local_pickup = 'local_pickup:7';
$required_text = esc_attr__( 'required', 'woocommerce' );
$required_html = '<abbr class="required" title="' . $required_text . '">*</abbr>';
?>
<script>
jQuery(function($){
var ism = 'input[name^="shipping_method"]', ismc = ism+':checked',
rq = '-required', vr = 'validate'+rq, w = 'woocommerce', wv = w+'-validated',
iv = '-invalid', fi = '-field', wir = w+iv+' '+w+iv+rq+fi,
b = '#billing_', s = '#shipping_', f = '_field',
a1 = 'country', a2 = 'address_1', a5 = 'state', a6 = 'city',
b1 = b+a1+f, b2 = b+a2+f, b5 = b+a5+f, b6 = b+a6+f,
localPickup = '<?php echo $local_pickup; ?>';
// Utility function to shows or hide checkout fields
function showHide( action='show', selector='' ){
if( action == 'show' )
$(selector).show(function(){
$(this).addClass(vr);
$(this).removeClass(wv);
$(this).removeClass(wir);
if( $(selector+' > label > abbr').html() == undefined )
$(selector+' label').append('<?php echo $required_html; ?>');
});
else
$(selector).hide(function(){
$(this).removeClass(vr);
$(this).removeClass(wv);
$(this).removeClass(wir);
if( $(selector+' > label > abbr').html() != undefined )
$(selector+' label > .required').remove();
});
}
// Initializing at start after checkout init (Based on the chosen shipping method)
setTimeout(function(){
if( $(ismc).val() == localPickup ) // Choosen "Local pickup" (Hidding "Take away")
{
showHide('hide',b1); // Country
showHide('hide',b2); // Address 1
showHide('hide',b5); // State
showHide('hide',b6); // City
}
else
{
showHide('show',b1);
showHide('show',b2);
showHide('show',b5);
showHide('show',b6);
}
}, 100);
// When shipping method is changed (Live event)
$( 'form.checkout' ).on( 'change', ism, function() {
if( $(ismc).val() == localPickup )
{
showHide('hide',b1);
showHide('hide',b2);
showHide('hide',b5);
showHide('hide',b6);
}
else
{
showHide('show',b1);
showHide('show',b2);
showHide('show',b5);
showHide('show',b6);
}
});
});
</script>
<?php
}
// Checkout conditional fields validation
add_action('woocommerce_checkout_process', 'wps_select_checkout_field_process');
function wps_select_checkout_field_process() {
// HERE your shipping methods rate IDs
$local_pickup = 'local_pickup:7';
$chosen_shipping_method = WC()->session->get( 'chosen_shipping_methods' )[0];
$billing = '<strong> ' . __('Billing', 'woocommerce') . ' ';
$shipping = '<strong> ' . __('Shipping', 'woocommerce') . ' ';
$country = __('country.', 'woocommerce');
$address1 = __('address_1.', 'woocommerce');
$state = __('state.', 'woocommerce');
$city = __('city.', 'woocommerce');
$end_text = '</strong> '. __('is a required field.', 'woocommerce');
if( $chosen_shipping_method == $local_pickup ) {
if( empty($_POST['billing_country']) )
wc_add_notice( $billing . $country . $end_text, 'error' );
if( empty($_POST['billing_address_1']) )
wc_add_notice( $billing . $address1 . $end_text, 'error' );
if( empty($_POST['billing_state']) )
wc_add_notice( $billing . $state . $end_text, 'error' );
if( empty($_POST['billing_city']) )
wc_add_notice( $billing . $city . $end_text, 'error' );
}
}
- Ссылка на проблему
- https://pacify.com.ua/checkout/
Вложения
Последнее редактирование: