Различные интернет-магазины на основе WooCommerce могут иметь свои атрибуты или какие-то важные моменты типа указания заказа в виде подарка, которые должны отображаться на cтранице оформления заказа. Кроме того, на ней часто много неиспользуимых полей вроде адреса фирмы или области, если торговля осуществляется в пределах одного региона.

Здесь мы рассмотрим, как убирать и добавлять поля в форме на странице оформления заказа и некоторые сопутствующие моменты.

Заменяем текст Billing detail на нужный

В верху форма оформления заказа имеет заголовок, который в английской версии записан, как  Billing detail, или по-русски "Детали платежа". Нам же, например, нужно заменить эту строку на "Данные заказчика". Для этого мы можем использовать хук-фильтр gettext.

В коде ниже показано, как это сделать с помощью строки на нужном вам языке и с помощью строки для перевода.

В самом верху функции закомментированы строки с атрибутами. Их имеет смысл раскомментировать, если вы не знаете, какой текст вам нужен, а затем совсем убрать из кода.

Поскольку перевод этих строк выполняется плагином Woocommerce, то вы сможете найти файл перевода в папке wp-content/languages/plugins с названием woocommerce-ru.po для русской версии сайта или woocommerce-uk.po для украинской. Его нужно будет обновить и добавить туда ваш вариант перевода.

Убираем поля из оформления заказа

Страница оформления заказа обычно перенасыщена полями ввода. Не все они бывают нужны.

Для того чтобы убрать какое-либо поле, нужно использовать функцию unset( $fields[ 'billing' ][ 'field_name' ] ). Для конкретного поля нужно знать его имя, поэтому в начале функции есть вывод всего массива внутри тегов <pre></pre>. Они закомментированы, но вы можете раскомментировать эти строки и посмотреть на данные.

На самом деле вы можете убрать и другие поля, например,  имя, фамилия, телефон или email:

Однако, эти поля важны в любом заказе. Поэтому их оставляем. Здесь просто приведены их названия для Woocommerce в массиве всех полей.

Например, нам нужно отказаться только от поля с названием страны, т.к. у нас доставка только в пределах Украины. Еще уберем второй адрес и название компании, т.к. в основном заказывают у нас обычные люди, т.е. "физические лица".

Сейчас наша функция будет выглядеть таким образом:

Преобразуем label в placeholder

На странице оформления заказа (checkout) обычно мы видим поля и над ними label с описанием, что нужно ввести. Для той же цели предназначен и атрибут placeholder, поэтому возникает желание убрать label и перенести текст из них внутрь поля. Для этой цели можно использовать следующий код:

Результат будет выглядеть примерно так (в зависимости от стилей темы):

преобразование label в placeholder на странице оформления заказа в woocommerce

Больше данных о полях  на странице оформления заказа - в официальной документации.

Добавляем свои поля в форму оформления заказа

Допустим, нам не только нужно удалять поля, но и добавить свои. Для этого мы можем воспользоваться хуком-фильтром woocommerce_billing_fields и вставить такой код:

Данные для полей можно найти в описании функции woocommerce_form_field().  

В этом коде мы добавляем поле типа radio, text и date. Выглядеть теперь наша форма будет так:

Новые поля в форме оформления заказа в woocommerce

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

Сохранение дополнительных полей

Добавленные вами поля нужно еще отобразить в заказе. А для этого их нужно сохранить. Поэтому после добавления полей в форму оформления заказа, мы их сохраняем с помощью такого кода:

В результате сохранение будет в виде дополнительных пользовательских полей под основными полями заказа. Перейдя в редактирование заказа, мы получим такой примерно такой внешний вид в нижней части страницы:

дополнительны поля в заказе woocommerce

Поскольку мы сохраняли дату, то ее в функции нужно преобразовать в формат дд.мм.гггг, т.к. без этого мы получим дату вида гггг-мм-дд, что не очень удобно для восприятия.

Для того чтобы названия добавленных нами полей визуально не были  редактируемыми + содержали название в том же виде, что и в форме, заполняемой пользователем, можно добавить файл admin.css, который будет регулировать внешнее отображение наших полей в админке.

Затем в этом файле admin.css прописываем такие стили:

Здесь для стилизации мы использовали возможности псевдокласса :has.

Результат работы с CSS:

Внешний вид доп. полей в админке после добавления CSS стилей

Если у вас есть checkbox в полях, то при выделении он вернет значение 1, соответственно в функции сохранения значения этого поля нужно проверять это значение:

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

Данные о добавлении/изменении полей при оформлении заказа вы также можете найти в официальной документации Woocommerce.

Добавляем поля в форму письма администратору и пользователю о новом заказе

Пока добавленные поля отображаются у нас только в админке сайта в самом заказе. Но вашему клиенту наверняка захочется получить еще информацию о добавлениях и в письме о новом заказе.

Поэтому мы используем тут хук , чтобы добавить таблицу с данными в тело письма.

В результате получим такое письмо (на мобильном телефоне.
wocommerce email с доп.полями

Добавление чекбокса о согласии на обработку данных

Сейчас почти во всех странах есть закон об использовании персональных данных. Чтобы его соблюсти, вы можете добавить соответствующий текст и <input type="checkbox"> при оформлении заказа в вашем интернет-магазине.

Код нужно вставить в файл functions.php:

Настройка вывода текста соглашения о персональных данных

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

woocommerce privacy text

Изменяйте его и сохраняйте эти изменения - они отобразятся на странице оформления заказа.

Автор: Alex

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *