Как сделать поля необязательными woocommerce

Обновлено: 06.07.2024

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

Для того, чтобы воздействовать на эти поля нам необходимо воспользоваться фильтром woocommerce_checkout_fields, что позволит перезаписать любое поля. В качестве примера давайте заменим текст плейсхолдера в поле order_comments (Комментарии к заказу). Сейчас оно выглядит так:

Мы можем изменить его путем добавления простой функции в в файл functions.php вашей темы или в плагин для сайта WordPress:

Вот и все! Таким же образом можно перезаписать и другие части, как например названия полей:

Можно вовсе удалить эти поля:

Ниже мы приводим полный список полей в массиве, которые можно изменить:

  • Оплата
    • billing_first_name
    • billing_last_name
    • billing_company
    • billing_address_1
    • billing_address_2
    • billing_city
    • billing_postcode
    • billing_country
    • billing_state
    • billing_email
    • billing_phone
    • shipping_first_name
    • shipping_last_name
    • shipping_company
    • shipping_address_1
    • shipping_address_2
    • shipping_city
    • shipping_postcode
    • shipping_country
    • shipping_state
    • account_username
    • account_password
    • account_password-2
    • order_comments

    Каждое поле содержит массив свойств:

    • type – тип поля (text, textarea, password, select)
    • label – название для поля ввода
    • placeholder – плейсхолдер (placeholder) для поля ввода
    • class – класс для поля ввода
    • required – true или false, в зависимости от того, является ли поле обязательным
    • clear – true или false, применяет clear fix к полю/его названию
    • label_class – класс для элемента названия поля (label)
    • options – для блоков выбора,массив опций (пары key => value)

    В некоторых случаях вам нужно будет использовать фильтр woocommerce_default_address_fields. Этот фильтр применяется ко всем стандартным полям оплаты и доставки:

    • country
    • first_name
    • last_name
    • company
    • address_1
    • address_2
    • city
    • state
    • postcode

    Например, для того, чтобы сделать поле address_1 не обязательным, нужно добавить следующий код:

    Определяем опции выбора из списка

    Если вы добавляете поле с типом ‘select’, как указывалось выше, вам нужно будет определить пары ключ/значение (key/value). Например:

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

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

    По всем вопросам и отзывам просьба писать в комментарии ниже.

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

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

    Весь код нужно добавить в файл functions.php вашей темы (хорошо если это будет дочерняя тема, чтобы изменения не затирались при обновлении).

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

    Затем отключаем ненужные, а если нужно добавить альтернативные – можем сделать это в этой же функции.

    Или добавим произвольное текстовое поле перед примечанием:

    Можем изменить другие атрибуты добавленных полей:

    Выведем добавленные нами поля в форму редактирования заказа в админке, чтобы нам было видно, что же ввел пользователь:

    И последнее – иногда может понадобится вывести произвольные данные из полей, которые мы создали, в письмо, отправляемое менеджеру например. Бывает очень полезно, если у менеджера нет доступа в админку (да и не нужен он по большому счету).

    Вывод произвольных полей, созданных в предыдущих шагах, в письмо отправляемое админу при поступлении нового заказа:

    Все хуки страницы оформления заказа в порядке убывания (оригинал):

    Стандартные хуки страницы оформления заказа (их можно удалить с помощью remove_action):

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

    Эту статью можно найти по словосочетаниям: удаление полей страницы заказа woocommerce, изменение полей страницы заказа woocommerce, change checkout fields woocommerce, добавление произвольных данных в письмо о новом заказе woocommerce.

    Добавляем поля для шаблона Оформление заказа Woocommerce. Стандартные поля Woocommerce делятся на 3 группы:

    1. поля оплаты (billing)
    2. поля доставки (shipping)
    3. поля аккаунта (account)

    Тезисно о важных моментах добавления поля:


    Добавляем текстовое поле в стандартные группы WC

    Далее создаем функцию сохранения значения метаполя. При необходимости, можно сделать функцию единой для нескольких полей.

    Чтобы поле было обязательным, меняем параметр required на true и добавляем функцию верификации

    Для чего-нибудь возможно пригодится в будущем: функция полного отключения валидации полей

    Еще один пример, добавление поля Отчество (в группу полей Плательщик):

    Как сохранять поле описано выше.

    Места вывода полей

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

    woocommerce_before_checkout_billing_form — перед полями Детали оплаты

    woocommerce_after_checkout_billing_form — после полей Детали оплаты

    woocommerce_checkout_fields — после всех полей, но перед комментарием к заказу

    Значения полей в админке и в шаблоне письма

    Смысл любого поля в том, чтобы мы получили из него информацию, поэтому выводим значение поля в админке и в шаблоне писем отправляемых клиенту и администратору.

    Выводим значения полей на странице редактирования заказа (в админке). Если у нас несколько произвольных полей можно их все вносить в данную функцию.

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

    Вывод поля Отчество в конце колонки Плательщик

    Добавляем другие типы полей

    Радио кнопка

    Сделать один из вариантов изначально активным

    Ещё один пример. Добавление поля Выбор даты доставки

    Checkbox

    Значение поля будет либо 0 — не отмечено, либо 1 — отмечено. Выводим значение checkbox проверкой

    и также при добавлении значения checkbox в админку можно вывод также сделать в виде условия

    Добавляем поле НЕ в стандартные группы WC

    Включение полей в шаблон письма WC

    Пользовательские поля или любую другую информацию можно добавить в шаблон письма в 3 области:


    Примеры добавления полей:

    if ( $sent_to_admin ) <> — то что в этом условии будет выводится только в шаблонах для администратора.

    Все же для того чтобы добавить отчество между именем и фамилией пришлось изменять локальный шаблон woocommerce/email/email-addresses.php

    Добавление необязательного checkbox

    Сохраняем при формировании заказа его статус:

    Вставляем в письмо администратору данный статус при проверке сохраненного поля:

    Читайте также: