Поддержка WooCommerce Кастомизация Формы изменения адреса платежа(доставки)

  • Решено TuMko

    (@tumko)


    Здравствуйте. Делаю собственный шаблон. Изменяю форму в разделе пользовательского аккаунта раздел адреса my-account/edit-address/billing/. Задаю класс через фильтр.

    
    add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );
    
    function custom_override_default_address_fields( $address_fields ) {
        $address_fields['address_1']['class'][0] = 'col-lg-12 offset-top-10';
        $address_fields['address_2']['class'][0] = 'col-lg-12 offset-top-10';
        $address_fields['first_name']['class'][0] = 'col-lg-6 offset-top-10';
        $address_fields['last_name']['class'][0] = 'col-lg-6 offset-top-10';
        $address_fields['company']['class'][0] = 'col-lg-12 offset-top-10';
        $address_fields['city']['class'][0] = 'col-lg-12 offset-top-10';
        $address_fields['state']['class'][0] = 'col-lg-6 offset-top-10';
        $address_fields['postcode']['class'][0] = 'col-lg-6 offset-top-10';
        
        return $address_fields;
    }
    

    Данный способ брал из документации Woocommerce. Но там не указаны такие поля, как номер телефона и email. Как задать этим двум полям нужные мне классы? Пытался задать в переопределенной мной функции woocommerce_form_field, но не получилось.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Делаю собственный шаблон

    шаблоны woocommerce нельзя делать собственными, их можно только копировать из плагина в соответствующий каталог темы и изменять под свои нужды. И то очень осторожно.

    шаблоны woocommerce нельзя делать собственными, их можно только копировать из плагина в соответствующий каталог темы и изменять под свои нужды. И то очень осторожно.

    Извините, заработался, имел ввиду собственную тему.
    Удалось задать нужный класс через фильтр:

    
    add_filter( 'woocommerce_billing_fields', 'custom_align_address_checkout_fields' );
    function custom_align_address_checkout_fields( $fields ) {
        if ( ( $key = array_search( 'form-row-wide', $fields['billing_phone']['class'] ) ) !== false ) {
            unset( $fields['billing_phone']['class'][ $key ] );
        }
        if ( ( $key = array_search( 'form-row-wide', $fields['billing_email']['class'] ) ) !== false ) {
            unset( $fields['billing_email']['class'][ $key ] );
        }
        $fields['billing_phone']['class'][] = 'col-lg-6 offset-top-10';
        $fields['billing_email']['class'][] = 'col-lg-6 offset-top-10';
    
        return $fields;
    }
    
Просмотр 2 ответов — с 1 по 2 (всего 2)