Как отключить поля на странице оформления заказа?

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

Удаляем ненужные поля со страницы оформления заказа
В итоге на странице чекаута мы оставили только 4 поля – имя, фамилия, телефон и email.

Предположим, что в каком-то конкретном магазине нет доставки, либо потому что там одни виртуальные товары, либо потому что там действует только самовывоз – неважно.

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

Также, прежде, чем мы перейдём к коду, хочу упомянуть, что в моём видеокурсе по WooCommerce есть отдельный урок про страницу оформления заказа, которую мы создаём на основе готовой вёрстки.

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

add_filter( 'woocommerce_checkout_fields', 'truemisha_del_fields', 25 );
 
function truemisha_del_fields( $fields ) {
 
	// оставляем эти поля
	// unset( $fields[ 'billing' ][ 'billing_first_name' ] ); // имя
	// unset( $fields[ 'billing' ][ 'billing_last_name' ] ); // фамилия
	// unset( $fields[ 'billing' ][ 'billing_phone' ] ); // телефон
	// unset( $fields[ 'billing' ][ 'billing_email' ] ); // емайл
 
	// удаляем все эти поля
	unset( $fields[ 'billing' ][ 'billing_company' ] ); // компания
	unset( $fields[ 'billing' ][ 'billing_country' ] ); // страна
	unset( $fields[ 'billing' ][ 'billing_address_1' ] ); // адрес 1
	unset( $fields[ 'billing' ][ 'billing_address_2' ] ); // адрес 2
	unset( $fields[ 'billing' ][ 'billing_city' ] ); // город
	unset( $fields[ 'billing' ][ 'billing_state' ] ); // регион, штат
	unset( $fields[ 'billing' ][ 'billing_postcode' ] ); // почтовый индекс
	unset( $fields[ 'order' ][ 'order_comments' ] ); // заметки к заказу
 
	return $fields;
 
}
  • Код можете вставить в functions.php вашей текущей или дочерней темы или создать плагин.
  • $fields – многомерный массив всех полей на странице оформления заказа, вы можете его распечатать при помощи echo '<pre>'; print_r( $fields ); и глянуть например еще поля доставки, которые не упомянуты в коде выше.

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии — 2

  • Sergey 30 июля 2020 #

    А можно развить этот урок и сделать скрытие полей в зависимости от вариантов доставки? Например, для курьерской доставки - одни поля, для самовывоза - другие.

    • Миша 31 июля 2020 #

      Всё возможно 🙃

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.