BloGGood.ru

Блог Костаневича Степана

WordPress, PHP, HTML, CSS, Windows

Блог на разные темы, seo-оптимизация, раскрутка сайта, создание сайта, вкусные эффекты для сайта и многое другое…

Главная » Wordpress » Удаление, изменение полей в полях оформления заказа для WooCommerce

Удаление, изменение полей в полях оформления заказа для WooCommerce

2016-09-05 / Вр:14:45 / просмотров: 27457

Сегодня я подготовил полезную статью, для тех, кто создал свой интернет-магазин на WordPress, используя плагин WooCommerce.
В статье я расскажу, как на странице «Оформление заказа» можно удалить или изменить поля.

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

Удаление, изменение полей в полях оформления заказа для 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']);

Если бы вам нужно было удалить поле «Примечании к заказу»:

Удаление, изменение полей в полях оформления заказа для WooCommerce

то, код был бы таким:

unset($fields['order']['order_comments']);

Обратите внимание на цвета. Эти названия заменились. Так как поле имеет  название «order_comments» с категорией «order» (см. список полей):

Удаление, изменение полей в полях оформления заказа для WooCommerce

Перезаписать название полей

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

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'] вы уже знаете, откуда я его взял и как его применять.

Обязательное и необязательное поле

Вы заметили рядом с названием поля звездочку (*)? Эта метка обозначает обязательные поля для заполнения.
Мы также можем здесь сделать замену. По желанию  можем сделать обязательное поле необязательным и наоборот.
Удаление, изменение полей в полях оформления заказа для WooCommerce

Сделаем поле «Почтовый индекс» необязательным для заполнения.

 

// Делаем поля необязательными
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;
}

После проделанной процедуры поле «Почтовый индекс» будет необязательным и метка (*) исчезнет.

Удаление, изменение полей в полях оформления заказа для WooCommerce

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

Вот мой код:

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;
}

В результате я добился вот такого эффекта на странице «Оформление заказа»:

Удаление, изменение полей в полях оформления заказа для WooCommerce

Я старался, но, возможно, не очень хорошо объяснил, скажите мне об этом.

Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓

Получай обновления блога!!! Подпишись:

Популярные статьи:

31 Ответов на комментарий - Удаление, изменение полей в полях оформления заказа для WooCommerce

  1. Александр

    Привет Степан ! Давненько тебя не было. :arrow: Спасибо за полезную статью.

  2. Avatar photo Степан => автор блога

    Привет, Александр! :arrow:
    Еще чуть-чуть и я снова буду писать статьи каждый день.

  3. Лена

    Спасибо, все хорошо расписано и объяснено, из чего код состоит, а как сделать чтобы заказчик мог и не ставить галочку «Я принимаю условия магазина», необязательный пункт или вообще убрать, у нас и нет никаких условий к заказчику…

  4. Avatar photo Степан => автор блога

    А, Вы, Лена, не пробовали отключить “Условия и соглашения” в админке?
    “woocommerce” => “Настройки” => “Платежи” => “Условия и соглашения”
    Условия и соглашения – в этом поле должно быть пусто.

  5. Лена

    Спасибо, так просто) может подскажите что делать с тем что форма для оформления заказ получилась как надо, имя и телефон (обязательные) и адрес (необязательное), а заказ не получается оформить, пишет “введите адрес для продолжения “… даже платежи на чековые поменяла

  6. Avatar photo Степан => автор блога

    Лен, а Вы пробовали все сделать так, как написано в этой статье? Тут как раз ответ на Ваш вопрос.

  7. Анатолий

    Здравствуйте, Степан! Хочу на форму оформления заказа прикрутить поле со списком городов, но не пойму как выбранный город передать в billing_city. Это вообще возможно?

  8. Avatar photo Степан => автор блога

    Здравствуйте, Анатолий!
    Попробуйте плагин “Saphali Woocommerce Russian”.
    Подробно тут: /wordpress/plagin-saphali-woocommerce-russian-nabor-russkix-dopolnenij-k-magazinu-woocommerce.html/

  9. Регина

    Здравствуйте! А как изменить эти поля в личном аккаунте? Код в теме я переделала, зменила поле “название компании” на “аккаунт вк”, убрала поле “населнный пункт”, область, изменила поле адреса. Все вышло – когда оформляеш заказ, все нормально. а вот, когда заходишь в личный аккаунт эти поля все равно существуют

  10. Avatar photo Степан => автор блога

    Здравствуйте, Регина! Попробуйте плагин Saphali Woocommerce Russian

  11. Александр

    Спасибо за статью. Вопрос: Возможно менять порядок полей? Например у меня идет поле Адрес потом поле город. Можно их поменять местами? Если да, то как?

  12. Avatar photo Степан => автор блога

    Попробуйте плагин Saphali Woocommerce Russian.
    Чтобы поменять местами поля, достаточно их перетащить с помощью мышки

  13. Charles

    Привет. Работаем с пейпал чекаутом. На странице чекаута – прорва вот этих ненужных полей, которые пациент заполняет, потея и матерясь. Особенно, если делает это с телефона.
    В чем ВОПРОС:
    На самом деле мне нужны от клиента реально – Имя, Фамилия, Емейл.
    Все остальные поля, которых овердофига – не нужны совершенно.
    Однако, они после нажатия кнопки ОПЛАТИТЬ автоматом передаются в чекаут ПейПала.
    Вопрос в том, будет ли работать чекаут Пейпала, если я уберу эти поля на чекаут странице сайта? Или начнет вопить, что ему не хватает данных и он не может запуститься. или еще что?

  14. Avatar photo Степан => автор блога

    Здравствуйте!
    Не вижу проблем попробовать.
    Возьмите, установите плагин Saphali Woocommerce Russian
    Установите тестовому товару цену, например 1 руб. и проверяйте.

  15. лена

    а подскажите, пожалуйста, как быть в такой ситуации.
    есть доставка по Татарстану, Марий Эл, Чувашии и прочим подобным местам, которые ограничены индексами.
    если индекс делать не обязательным или вообще убрать, метод доставки не определяется.
    как сделать так, чтобы без введения индекса отправлялся заказ?

    без индекса работает только зона Россия и регионы Россия.
    но в этом случае невозможно назначить разные способы доставки и разную оплату за них для разных мест.

  16. Avatar photo Степан => автор блога

    Простите, Лена, но я Вас не понял

  17. лена

    как назначить зону доставки Татарстан?

  18. Avatar photo Степан => автор блога

    Добавьте в файл functions.php вот такой код:

    add_filter( 'woocommerce_states', 'new_rus_woocommerce_states' );
    function new_rus_woocommerce_states( $states ) {
    $states['RU'] = array(
    'TTR' => 'Татарстан'
    );
    return $states;
    }
    

    Попробуйте вот так.

  19. лена

    спасибо, попробуем.
    по аналогии можно и другие зоны подобные делать?

  20. Avatar photo Степан => автор блога

    да, но только через запятую.

    add_filter( 'woocommerce_states', 'new_rus_woocommerce_states' );
    function new_rus_woocommerce_states( $states ) {
    $states['RU'] = array(
    'CHL' => 'Челябинск',
    'TTR' => 'Татарстан'
    );
    return $states;
    }
    
  21. Сергей

    Степан здравствуйте! Я сломал себе голову, и чуть не сломал свой сайт)) мне нужно перезаписать текст в поле коментарии к заказу. Помогите! дам доступ к магазину, заплачу, у меня ума не хватает(((

  22. Avatar photo Степан => автор блога

    Здравствуйте, Сергей!
    Воспользуйтесь плагином

  23. Семён

    Здравствуйте Степан!
    Подскажите пожалуйста как сделать поле “телефон” обязательным?

  24. Avatar photo Степан => автор блога

    Здравствуйте, Семен!
    Атрибутом required=”required” можно сделать поле обязательным:

    <input ENGINE="tel" required="required">

    наверное Вам будет интересно посмотреть про дополнительные возможности форм HTML:
    Формы (form) на HTML5

  25. Exer191

    А вот как убрать некоторые поля (компания, ID транзакции) из платежа/доставки, когда создаешь/редактируешь Заказ из админской консоли ?

  26. Avatar photo Степан => автор блога

    Перед собой сейчас нет магазина (не делаю заказ), что бы конкретно написать код, но как из идей, можно спрятать блок или поля используя CSS, например:

    textarea#comment {
        display: none;
    }
    

    или

    .classForm {
        display: none;
    }
    
  27. Игорь

    Добрый день! Не подскажите как убрать пометку поля “НЕОБЯЗАТЕЛЬНО”?

  28. Avatar photo Степан => автор блога

    здравствуйте, Игорь! Вот тут есть решение вопроса /wordpress/plagin-saphali-woocommerce-russian-nabor-russkix-dopolnenij-k-magazinu-woocommerce.html/

  29. Игорь

    Здравствуйте.
    Подскажите, а что вписывать, что бы в поле телефон уже автоматически вписывалось “+7” ?

    $fields[‘billing’][‘billing_phone’][‘value’] = __( “+7” );

    Не работает…

  30. Владимир

    Удаление полей сработало, а сделать поле необязательным почему-то нет. Вот мой код:

    // Делаем поля необязательными
    add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );
     
    // Наша перехваченная функция - $fields проходит через фильтр
    function custom_override_default_address_fields( $address_fields ) {
    $address_fields['email']['required'] = false; //делаем поле email необязательным
     
    return $address_fields;
    }
    
  31. Avatar photo Степан => автор блога

    используйте маску JQuery.
    Могу написать код специально для Вас.

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

;-) :| :x :twisted: :smokes: :smile: :shock: :sad: :rose: :roll: :razz: :pop-corne: :oops: :o :mrgreen: :lol: :idea: :grin: :gazeta: :evil: :cry: :cool: :coffe: :arrow: :???: :?: :!:

Чтобы добавить в комментарий код HTML, PHP, CSS, JavaScript, нужно сделать так: [code] ваш код [/code]

Метки: ,

Мои цели на 2018-2019:

1). Закончить тему «Bootstrap»

2). Закончить тему «Все про PHP и MySQL»

3). Создать портфолио и мини интернет-магазин шаблонов

4). Довести количество статей до 800

5). Добиться посещаемости 3000 человек/сутки

6). Увеличить число подписчиков до 250

Статистика по блогу

Количество записей на блоге: 810
Количество страниц на блоге: 20
Количество рубрик на блоге: 28
Количество меток на блоге: 72
Количество комментариев на блоге: 4716