Поля оформления заказа - Сделайте платежный адрес 2 выше платежного адреса 1


В полях оформления заказа WooCommerce я пытаюсь сделать billing_address_2 выше billing_address_1 в форме оформления заказа.

Поэтому вместо того, чтобы быть:

Street Address
Apartment

Я хотел бы иметь:

Apartment
Street Address

Пожалуйста, также обратите внимание, что я использую тему под названием Avada.

Как я могу этого добиться?

Спасибо.

Author: LoicTheAztec, 2017-02-06

1 answers

Обновление (связано с вашим комментарием)...

Здесь у вас есть дополнение, которое удаляет текстовую метку "Адрес" из поля Адрес1 и устанавливает ее в поле Адрес2, делая также это поле (необязательно) обязательным и немного изменяя владельца места… У меня есть и другое решение (см. Ниже после кода).

Вот код:

add_filter( 'woocommerce_checkout_fields', 'custom_billing_fields_order' );
function custom_billing_fields_order( $fields ) {

    // 1. Customizing address_1 and address_2 fields
    $fields['billing']['billing_address_1']['label'] = ''; // Removing the label from Adress1
    $fields['billing']['billing_address_2']['label'] = __('Address', 'theme_domain');
    $fields['billing']['billing_address_2']['required'] = true; // Making Address 2 field required
    $fields['billing']['billing_address_2']['placeholder'] = __('Apartment, suite, unit etc...', 'woocommerce');

    // 2. Custom ordering the billing fields array (toggling address_1 with address_2)
    $custom_fields_order = array(
        'billing_first_name', 'billing_last_name',
        'billing_company',
        'billing_email',      'billing_phone',
        'billing_country',
        'billing_address_2',  'billing_address_1',  ##  <== HERE, changed order
        'billing_postcode',   'billing_city'
    );

    foreach($custom_fields_order as $field)
        $new_ordered_fields[$field] = $fields['billing'][$field];

    // Replacing original fields order by the custom one
    $fields['billing'] = $new_ordered_fields;


    // Returning Checkout customized billing fields order
    return $fields;
}

Вместо того, чтобы переключать эти 2 поля, вы можете инвертировать заполнители полей и добавить (необязательно) обязательное поле Адрес2, поэтому вам не нужно будет переупорядочивать поля. Вы можете сделать это следующим образом:

add_filter( 'woocommerce_checkout_fields', 'custom_billing_fields_placeholders' );
function custom_billing_fields_placeholders( $fields ) {

    // 1. Customizing address_1 and address_2 fields
    $fields['billing']['billing_address_1']['placeholder'] = __('Apartment, suite, unit etc...', 'woocommerce');
    $fields['billing']['billing_address_2']['required'] = true; // Making Address 2 field required
    $fields['billing']['billing_address_2']['placeholder'] = __('Street address', 'woocommerce');

    // Returning Checkout customized billing fields
    return $fields;
}

Код входит в function.php файл вашей активной дочерней темы (или темы) или также в любом файле плагина.

Код протестирован и работает.


Связанные ответы: Поля проверки: Скрытие и отображение существующих полей

Официальная документация: Настройка полей оформления заказа с помощью действий и фильтров

 3
Author: LoicTheAztec, 2017-05-23 11:53:29