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

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

Удаляем ненужные поля со страницы оформления заказа
В итоге на странице чекаута мы оставили только 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 ); и глянуть например еще поля доставки, которые не упомянуты в коде выше.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

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

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

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

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