Пользовательский заполнитель для всех полей оформления заказа WooCommerce


Я пытаюсь добавить заполнитель в поля оформления заказа WooCommerce, и он отлично работает для каждого поля , за исключением полей телефона и электронной почты .

Это код, который я использую:

add_filter('woocommerce_default_address_fields', 'override_address_fields');
function override_address_fields( $address_fields ) {
    $address_fields['first_name']['placeholder'] = 'Fornavn';
    $address_fields['last_name']['placeholder'] = 'Efternavn';
    $address_fields['address_1']['placeholder'] = 'Adresse';
    $address_fields['state']['placeholder'] = 'Stat';
    $address_fields['postcode']['placeholder'] = 'Postnummer';
    $address_fields['city']['placeholder'] = 'By';
    $address_fields['phone']['placeholder'] = 'Telefon';
    $address_fields['email']['placeholder'] = 'Email';
    return $address_fields;
}

Где я ошибаюсь? Почему телефон и электронная почта не дают никаких результатов?

Я взял идентификаторы из этих двух полей с помощью инспектора инструментов разработчика браузера.


Редактировать:

Я также пробовал это предлагаемое код:

add_filter('woocommerce_checkout_fields', 'override_checkout_fields');
function override_checkout_fields( $checkout_fields ) {
    $checkout_fields['first_name']['placeholder'] = 'Fornavn';
    $checkout_fields['last_name']['placeholder'] = 'Efternavn';
    $checkout_fields['address_1']['placeholder'] = 'Adresse';
    $checkout_fields['state']['placeholder'] = 'Stat';
    $checkout_fields['postcode']['placeholder'] = 'Postnummer';
    $checkout_fields['city']['placeholder'] = 'By';
    $checkout_fields['phone']['placeholder'] = 'Telefon';
    $checkout_fields['email']['placeholder'] = 'Email';
    return $checkout_fields;
}

И этот тоже:

add_filter('woocommerce_checkout_fields', 'override_checkout_fields');
function override_checkout_fields( $checkout_fields ) {
    $checkout_fields['billing_first_name']['placeholder'] = 'Fornavn';
    $checkout_fields['billing_last_name']['placeholder'] = 'Efternavn';
    $checkout_fields['billing_address_1']['placeholder'] = 'Adresse';
    $checkout_fields['billing_state']['placeholder'] = 'Stat';
    $checkout_fields['billing_postcode']['placeholder'] = 'Postnummer';
    $checkout_fields['billing_city']['placeholder'] = 'By';
    $checkout_fields['billing_phone']['placeholder'] = 'Telefon';
    $checkout_fields['billing_email']['placeholder'] = 'Email';
    return $checkout_fields;
}

Но это не работает.

Author: LoicTheAztec, 2017-09-20

2 answers

Взглянув на официальные документы , вы увидите, что нет 'phone' и 'email' ключевые поля для адресов по умолчанию при использовании woocommerce_default_address_fields крючок для фильтра.
Ключами для допустимых полей являются:
country, first_name, last_name, company, address_1, address_2, city, state, postcode.

Вот почему вы можете получить изменения с помощью woocommerce_default_address_fields

Электронная почта и телефон являются полями для выставления счетов , и они доступны через woocommerce_checkout_fields крючок для фильтра. Они являются названный (см. в документации) 'billing_phone' и 'billing_phone'...

Правильный способ переопределить их:

add_filter( 'woocommerce_checkout_fields' , 'override_billing_checkout_fields', 20, 1 );
function override_billing_checkout_fields( $fields ) {
    $fields['billing']['billing_phone']['placeholder'] = 'Telefon';
    $fields['billing']['billing_phone']['placeholder'] = 'Email';
    return $fields;
}

И для других полей (выставление счетов и доставка):

add_filter('woocommerce_default_address_fields', 'override_default_address_checkout_fields', 20, 1);
function override_default_address_checkout_fields( $address_fields ) {
    $address_fields['first_name']['placeholder'] = 'Fornavn';
    $address_fields['last_name']['placeholder'] = 'Efternavn';
    $address_fields['address_1']['placeholder'] = 'Adresse';
    $address_fields['state']['placeholder'] = 'Stat';
    $address_fields['postcode']['placeholder'] = 'Postnummer';
    $address_fields['city']['placeholder'] = 'By';
    return $address_fields;
}

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

Весь код протестирован на Woocommerce 3+ и работает.


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

 4
Author: LoicTheAztec, 2017-09-21 00:53:26

Просматривая документацию WooCommerce, вы можете попробовать использовать фильтр woocommerce_checkout_fields вместо woocommerce_default_address_fields

Кажется более логичным, поскольку поля выше не все связаны с адресом, и этот крючок получен из class-wc-countries.php.

Также обратите внимание, что имена полей различаются в зависимости от контекста страницы, например, поля страницы выставления счетов называются так:

  • имя первого счета
  • имя платежной ведомости
  • электронная почта для выставления счетов
  • биллинг_фон

Надеюсь, это поможет! Удачи.

 0
Author: fyllepo, 2017-09-20 16:24:48