Сделайте поля адресов для оплаты не обязательными в WooCommerce - PullRequest
0 голосов
/ 30 апреля 2018

В Woocommerce я пытаюсь заполнить поля адреса для оплаты, не обязательные с помощью приведенного ниже кода ... Но у меня есть эта ошибка"Пожалуйста, введите адрес, чтобы продолжить", при отправке формы проверки.

Мой код для установки адреса поля проверки не обязательны:

add_filter( 'woocommerce_billing_fields', 'wc_npr_filter_phone', 10, 1 
);
function wc_npr_filter_phone( $address_fields ) {
    $address_fields['billing_phone']['required'] = true;
    $address_fields['billing_country']['required'] = false;
    $address_fields['billing_last_name']['required'] = false;
    $address_fields['billing_city']['required'] = false;
    $address_fields['billing_postcode']['required'] = false;
    $address_fields['billing_email']['required'] = false;
    $address_fields['billing_state']['required'] = false;
    $address_fields['billing_address_1']['required'] = false;
    $address_fields['billing_address_2']['required'] = false;
    return $address_fields;

}

//make shipping fields not required in checkout
add_filter( 'woocommerce_shipping_fields', 
'wc_npr_filter_shipping_fields', 10, 1 );
function wc_npr_filter_shipping_fields( $address_fields ) {
    $address_fields['shipping_first_name']['required'] = false;
    $address_fields['shipping_last_name']['required'] = false;
    $address_fields['shipping_address_1']['required'] = false;
    $address_fields['shipping_address_2']['required'] = false;
    $address_fields['shipping_city']['required'] = false;
    $address_fields['shipping_country']['required'] = false;
    $address_fields['shipping_postcode']['required'] = false;
    $address_fields['shipping_state']['required'] = false;
    return $address_fields;
}

HTML, похоже, тоже в порядке:

HTML markup screenshot

Как сделать так, чтобы поля адресов оплаты в WooCommerce не требовались?

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

Единственное, что мне помогло, - это добавить поле для страны и сделать его невидимым (потому что оно мне не нужно)

0 голосов
/ 12 июня 2019
add_filter( 'woocommerce_checkout_fields', 'your_require_wc_phone_field');
function your_require_wc_phone_field( $fields ) {
    $fields['billing']['billing_phone']['required'] = false;
    return $fields;
}

Этот метод использует 'woocommerce_checkout_fields', который при тестировании на моих сайтах был единственным способом, которым я мог изменить поле billing_phone на требуемое для моей проблемы.

https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/

0 голосов
/ 01 мая 2018

Вы должны использовать вместо фильтра woocommerce_default_address_fields фильтр, как объяснено здесь .

Код замены:

// Billing and shipping addresses fields
add_filter( 'woocommerce_default_address_fields' , 'filter_default_address_fields', 20, 1 );
function filter_default_address_fields( $address_fields ) {
    // Only on checkout page
    if( ! is_checkout() ) return $address_fields;

    // All field keys in this array
    $key_fields = array('country','first_name','last_name','company','address_1','address_2','city','state','postcode');

    // Loop through each address fields (billing and shipping)
    foreach( $key_fields as $key_field )
        $address_fields[$key_field]['required'] = false;

    return $address_fields;
}

Поскольку для выставления счета по электронной почте и по телефону по умолчанию уже требуется , если вы хотите, чтобы они не требовались , вам потребуется этот дополнительный код:

// For billing email and phone - Make them not required
add_filter( 'woocommerce_billing_fields', 'filter_billing_fields', 20, 1 );
function filter_billing_fields( $billing_fields ) {
    // Only on checkout page
    if( ! is_checkout() ) return $billing_fields;

    $billing_fields['billing_phone']['required'] = false;
    $billing_fields['billing_email']['required'] = false;
    return $billing_fields;
}

Весь код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...