Пользовательский заполнитель для всех полей оформления заказа 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;
}
Но это не работает.
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+ и работает.
Ссылка: Настройка полей оформления заказа с помощью действий и фильтров
Просматривая документацию WooCommerce, вы можете попробовать использовать фильтр woocommerce_checkout_fields
вместо woocommerce_default_address_fields
Кажется более логичным, поскольку поля выше не все связаны с адресом, и этот крючок получен из class-wc-countries.php
.
Также обратите внимание, что имена полей различаются в зависимости от контекста страницы, например, поля страницы выставления счетов называются так:
- имя первого счета
- имя платежной ведомости
- электронная почта для выставления счетов
- биллинг_фон
Надеюсь, это поможет! Удачи.