Сегодня я подготовил полезную статью, для тех, кто создал свой интернет-магазин на WordPress, используя плагин WooCommerce.
В статье я расскажу, как на странице «Оформление заказа» можно удалить или изменить поля.
Чтобы делать какие-либо процедуры с полями, нужно узнать название поля. Чтобы узнать название поля, загляните в исходный код.
Теперь сам код. Код нужно вставлять в файл вашей темы, «functions.php»:
Удаляем поле
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); function custom_override_checkout_fields( $fields ) { unset($fields['billing']['billing_first_name']); // удаляем поле с именем return $fields; }
Поле «Имя» исчезнет.
Строка №5 – отвечает за удаление поля. Основные ее параметры:
billing
billing_first_name
Эти параметры меняются в зависимости от поля (см. список полей ниже)
список полей:
- billing (ОПЛАТА)
- 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 (ДОСТАВКА)
- shipping_first_name
- shipping_last_name
- shipping_company
- shipping_address_1
- shipping_address_2
- shipping_city
- shipping_postcode
- shipping_country
- shipping_state
- account (АККАУНТ)
- account_username
- account_password
- account_password-2
- order (ЗАКАЗ)
- order_comments
Обратите внимание: я разбил все по цветам. Сделал это не зря, чтобы потом не возникли вопросы.
unset($fields['billing']['billing_first_name']);
Если бы вам нужно было удалить поле «Примечании к заказу»:
то, код был бы таким:
unset($fields['order']['order_comments']);
Обратите внимание на цвета. Эти названия заменились. Так как поле имеет название «order_comments» с категорией «order» (см. список полей):
Перезаписать название полей
Название полей можно перезаписать. Вот, например, поле «Примечание к заказу» и в самом поле текст «Примечания к вашему заказу, например, особые пожелания отделу доставки.» можно заменить на другой текст:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); function custom_override_checkout_fields( $fields ) { $fields['order']['order_comments']['label'] = 'Мое новое название поля'; $fields['order']['order_comments']['placeholder'] = 'Мой новый текст в самом поле'; return $fields; }
Строка №4 и №5 – вставляем ['label'], если хотим заменить название поля и ['placeholder'] – если нужно заменить текст внутри поля. Все остальное ['order']['order_comments'] вы уже знаете, откуда я его взял и как его применять.
Обязательное и необязательное поле
Вы заметили рядом с названием поля звездочку (*)? Эта метка обозначает обязательные поля для заполнения.
Мы также можем здесь сделать замену. По желанию можем сделать обязательное поле необязательным и наоборот.
Сделаем поле «Почтовый индекс» необязательным для заполнения.
// Делаем поля необязательными add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' ); // Наша перехваченная функция - $fields проходит через фильтр function custom_override_default_address_fields( $address_fields ) { $address_fields['postcode']['required'] = false; //почтовый индекс return $address_fields; }
После проделанной процедуры поле «Почтовый индекс» будет необязательным и метка (*) исчезнет.
Вот, забрасываю вам готовый код, может, смотря на него, вы сможете разобраться, что к чему. Так я делаю частенько, потому что порой объяснить автору, что и куда нужно вставлять, чтобы все заработало очень тяжело.
Вот мой код:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); // Our hooked in function - $fields is passed via the filter! function custom_override_checkout_fields( $fields ) { unset($fields['billing']['billing_company']); // удаляем Название компании unset($fields['billing']['billing_postcode']); // удаляем Индекс unset($fields['billing']['billing_city']); // удаляем Населённый пункт unset($fields['billing']['billing_country']); // удаляем поле Страна unset($fields['billing']['billing_address_2']); // удаляем второе поле Адрес $fields['billing']['billing_address_1']['label'] = 'Номер отделения Новой Почты'; // меняем Адрес $fields['billing']['billing_address_1']['placeholder'] = ' '; // в поле Адрес оставляем пустым return $fields; } // Делаем поля необязательными add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' ); // Наша перехваченная функция - $fields проходит через фильтр function custom_override_default_address_fields( $address_fields ) { $address_fields['address_1']['required'] = false; // Адрес $address_fields['postcode']['required'] = false; // Индекс $address_fields['city']['required'] = false; // Населённый пункт $address_fields['country']['required'] = false; // страна return $address_fields; }
В результате я добился вот такого эффекта на странице «Оформление заказа»:
Я старался, но, возможно, не очень хорошо объяснил, скажите мне об этом.
Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓
Последние новости категории:
Похожие статьи
Популярные статьи:
-
Как узнать id компьютера
Дата: 29 марта 2013
Прокомментировано:90
просмотров: 330341 -
Размеры форматов листов А0 – А7
Дата: 23 января 2013
Прокомментировано:3
просмотров: 274700 -
Смешные логические загадки с подвохом, отгадки прилагаются
Дата: 12 ноября 2014
Прокомментировано:5
просмотров: 222517 -
Готовые макеты блоков для веб-страниц на HTML и CSS
Дата: 25 июня 2014
Прокомментировано:23
просмотров: 187684 -
Установка windows 7 на ноутбук
Дата: 18 декабря 2012
Прокомментировано:169
просмотров: 186563
31 Ответов на комментарий - Удаление, изменение полей в полях оформления заказа для WooCommerce
Добавить комментарий
Метки: wordpress, без плагинов
Привет Степан ! Давненько тебя не было.
Спасибо за полезную статью.
Привет, Александр!
Еще чуть-чуть и я снова буду писать статьи каждый день.
Спасибо, все хорошо расписано и объяснено, из чего код состоит, а как сделать чтобы заказчик мог и не ставить галочку «Я принимаю условия магазина», необязательный пункт или вообще убрать, у нас и нет никаких условий к заказчику…
А, Вы, Лена, не пробовали отключить “Условия и соглашения” в админке?
“woocommerce” => “Настройки” => “Платежи” => “Условия и соглашения”
Условия и соглашения – в этом поле должно быть пусто.
Спасибо, так просто) может подскажите что делать с тем что форма для оформления заказ получилась как надо, имя и телефон (обязательные) и адрес (необязательное), а заказ не получается оформить, пишет “введите адрес для продолжения “… даже платежи на чековые поменяла
Лен, а Вы пробовали все сделать так, как написано в этой статье? Тут как раз ответ на Ваш вопрос.
Здравствуйте, Степан! Хочу на форму оформления заказа прикрутить поле со списком городов, но не пойму как выбранный город передать в billing_city. Это вообще возможно?
Здравствуйте, Анатолий!
Попробуйте плагин “Saphali Woocommerce Russian”.
Подробно тут: https://bloggood.ru/wordpress/plagin-saphali-woocommerce-russian-nabor-russkix-dopolnenij-k-magazinu-woocommerce.html/
Здравствуйте! А как изменить эти поля в личном аккаунте? Код в теме я переделала, зменила поле “название компании” на “аккаунт вк”, убрала поле “населнный пункт”, область, изменила поле адреса. Все вышло – когда оформляеш заказ, все нормально. а вот, когда заходишь в личный аккаунт эти поля все равно существуют
Здравствуйте, Регина! Попробуйте плагин Saphali Woocommerce Russian
Спасибо за статью. Вопрос: Возможно менять порядок полей? Например у меня идет поле Адрес потом поле город. Можно их поменять местами? Если да, то как?
Попробуйте плагин Saphali Woocommerce Russian.
Чтобы поменять местами поля, достаточно их перетащить с помощью мышки
Привет. Работаем с пейпал чекаутом. На странице чекаута – прорва вот этих ненужных полей, которые пациент заполняет, потея и матерясь. Особенно, если делает это с телефона.
В чем ВОПРОС:
На самом деле мне нужны от клиента реально – Имя, Фамилия, Емейл.
Все остальные поля, которых овердофига – не нужны совершенно.
Однако, они после нажатия кнопки ОПЛАТИТЬ автоматом передаются в чекаут ПейПала.
Вопрос в том, будет ли работать чекаут Пейпала, если я уберу эти поля на чекаут странице сайта? Или начнет вопить, что ему не хватает данных и он не может запуститься. или еще что?
Здравствуйте!
Не вижу проблем попробовать.
Возьмите, установите плагин Saphali Woocommerce Russian
Установите тестовому товару цену, например 1 руб. и проверяйте.
а подскажите, пожалуйста, как быть в такой ситуации.
есть доставка по Татарстану, Марий Эл, Чувашии и прочим подобным местам, которые ограничены индексами.
если индекс делать не обязательным или вообще убрать, метод доставки не определяется.
как сделать так, чтобы без введения индекса отправлялся заказ?
без индекса работает только зона Россия и регионы Россия.
но в этом случае невозможно назначить разные способы доставки и разную оплату за них для разных мест.
Простите, Лена, но я Вас не понял
как назначить зону доставки Татарстан?
Добавьте в файл functions.php вот такой код:
Попробуйте вот так.
спасибо, попробуем.
по аналогии можно и другие зоны подобные делать?
да, но только через запятую.
Степан здравствуйте! Я сломал себе голову, и чуть не сломал свой сайт)) мне нужно перезаписать текст в поле коментарии к заказу. Помогите! дам доступ к магазину, заплачу, у меня ума не хватает(((
Здравствуйте, Сергей!
Воспользуйтесь плагином
Здравствуйте Степан!
Подскажите пожалуйста как сделать поле “телефон” обязательным?
Здравствуйте, Семен!
Атрибутом required=”required” можно сделать поле обязательным:
наверное Вам будет интересно посмотреть про дополнительные возможности форм HTML:
Формы (form) на HTML5
А вот как убрать некоторые поля (компания, ID транзакции) из платежа/доставки, когда создаешь/редактируешь Заказ из админской консоли ?
Перед собой сейчас нет магазина (не делаю заказ), что бы конкретно написать код, но как из идей, можно спрятать блок или поля используя CSS, например:
или
Добрый день! Не подскажите как убрать пометку поля “НЕОБЯЗАТЕЛЬНО”?
здравствуйте, Игорь! Вот тут есть решение вопроса https://bloggood.ru/wordpress/plagin-saphali-woocommerce-russian-nabor-russkix-dopolnenij-k-magazinu-woocommerce.html/
Здравствуйте.
Подскажите, а что вписывать, что бы в поле телефон уже автоматически вписывалось “+7” ?
$fields[‘billing’][‘billing_phone’][‘value’] = __( “+7” );
Не работает…
Удаление полей сработало, а сделать поле необязательным почему-то нет. Вот мой код:
используйте маску JQuery.
Могу написать код специально для Вас.