• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Подписи к элементам платежного адреса и их порядок

keystation

Новичок
Друзья, всем привет. Помогите решить две проблемки:

1. В вукомерсе на странице информации о заказе, а также на странице редактирования платежного адреса и адреса доставки данные клиента выглядят не очень "дружелюбно".
К элементам нет подписей. (хочу подписать: имя, улица, дом, город итд.)
ODGikN0D0tL8uP9o019PhDVHi3x5YCxU8YNksd8TzrkoiS7jiZCE8n6SgUZKjk0P1kW6tqfC6maI_ZbFt1eQIg%3D%3D

В таком же виде это приходит на email клиентам.
За формирование этого блока, как я понял, отвечает файл "order-details-customer.php" который лежит тут: woocommerce\templates\order\
В этом же файле я сделал подписи к Телефону с Эл.почтой. А вот к остальным данным в этом файле не сделать подписи. Все что там есть это "get_formatted_billing_address"...
Код:
<address>
<?php echo ( $address = $order->get_formatted_billing_address() ) ? $address : __( 'N/A', 'woocommerce' ); ?>
<br>
<?php if ( $order->get_billing_phone() ) : ?>
<span class="woocommerce-customer-details--phone"><strong>Телефон:</strong> <?php echo esc_html( $order->get_billing_phone() ); ?></span>
<?php endif; ?>
<br>
<?php if ( $order->get_billing_email() ) : ?>
<span class="woocommerce-customer-details--email"><strong>E-mail:</strong> <?php echo esc_html( $order->get_billing_email() ); ?></span>
<?php endif; ?>
</address>
Подскажите, где формируется эта информация и где такие подписи можно добавить?

2. Я использую плагин Saphali WC lite. В нем я переименовал поля:
- "область" в "квартиру"
- "Адрес" в "улицу"
- вторую строку адреса в "номер дома"
И на странице чекаута установил им нужную последовательность.
Однако в остальных местах где отображается эта информация - она выводится в другом порядке - как на скрине выше. В итоге получается несуразица: улица, дом, город, квартира, индекс.

Вопрос: можно ли где-то в woocommerce изменить порядок вывода этих данных сделав его логичным, например: индекс, город, улица, дом, квартира?

Заранее всем благодарен :)
 

keystation

Новичок
Проблема решилась правкой файла class-wc-countries.php. В нем есть строки, отвечающие за отображение адреса и порядка элементов для разных стран.
Код:
public function get_address_formats() {
        if ( empty( $this->address_formats ) ) {
            $this->address_formats = apply_filters( 'woocommerce_localisation_address_formats', array(
                'default' => "{name}\n{postcode}\n{city}\n{company}\n{address_1}\n{address_2}\n{state}\n{country}" ...

Дописал нужные фразы, и поменял порядок вывода.

Код:
public function get_address_formats() {
        if ( empty( $this->address_formats ) ) {
            $this->address_formats = apply_filters( 'woocommerce_localisation_address_formats', array(
                'default' => "<strong>Покупатель:</strong> {name}\n<strong>Индекс:</strong> {postcode}\n<strong>Город:</strong> {city}\n{company}\n<strong>Улица:</strong> {address_1}\n<strong>Дом:</strong> {address_2}\n<strong>Квартира:</strong> {state}\n{country}" ...

Получилось в итоге так:
2018-01-26_15-15-15.png 2018-01-26_15-15-52.png 2018-01-26_15-16-30.png
Клиенту на электронную почту также приходит в нормальном виде.
 
  • Like
Реакции: isak

otv

Новичок
Проблема решилась правкой файла class-wc-countries.php. В нем есть строки, отвечающие за отображение адреса и порядка элементов для разных стран.
Код:
public function get_address_formats() {
        if ( empty( $this->address_formats ) ) {
            $this->address_formats = apply_filters( 'woocommerce_localisation_address_formats', array(
                'default' => "{name}\n{postcode}\n{city}\n{company}\n{address_1}\n{address_2}\n{state}\n{country}" ...

Дописал нужные фразы, и поменял порядок вывода.

Код:
public function get_address_formats() {
        if ( empty( $this->address_formats ) ) {
            $this->address_formats = apply_filters( 'woocommerce_localisation_address_formats', array(
                'default' => "<strong>Покупатель:</strong> {name}\n<strong>Индекс:</strong> {postcode}\n<strong>Город:</strong> {city}\n{company}\n<strong>Улица:</strong> {address_1}\n<strong>Дом:</strong> {address_2}\n<strong>Квартира:</strong> {state}\n{country}" ...

Получилось в итоге так:
Посмотреть вложение 3719 Посмотреть вложение 3720 Посмотреть вложение 3721
Клиенту на электронную почту также приходит в нормальном виде.
При обновлении плагина у вас все затрется правильнее это делать в хуках, к примеру в файле functions.php вашей темы вставить следующий код.
Код:
 add_filter('woocommerce_localisation_address_formats', 'new_address_formats');
function new_address_formats( $formats ) {
    $formats[ 'default' ]  = "<strong>Покупатель:</strong>{name}\n<strong>Компания:</strong>{company}\n<strong>Адресс:</strong>{address_1}\n{address_2}\n<strong>Город:</strong>{city}\n<strong>Область:</strong>{state}\n<strong>Почтовый индекс:</strong>{postcode}\n{country}";   
    return $formats;
}
 
Сверху Снизу