Skip to content

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

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

Последнее время поступает много запросов на проблемы с оформлением заказов для WooCoommerce. Как выяснилось это вызвано плагином Checkout Field Editor for WooCommerce.

Для того чтоб отключить некоторые из полей без использования плагина, необходимо в файл custom-functions.php вставить следующий код:

add_filter( 'woocommerce_checkout_fields', 'wtw_unset_fields', 25 );

function wtw_unset_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_country' ] ); // страна

	// эти поля становятся необзательными
	unset( $fields[ 'billing' ][ 'billing_company' ] ); // компания
	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;

}

Внимание

Для правильной работы оформления заказа поле billing_country должно быть включено. При этом данное поле, типа select, необходимо добавить и в вашу форму оформления с меткой wp = billing_country. Само поле при необходимости можно скрыть.

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

add_filter( 'default_checkout_billing_country', 'default_checkout_country' );

function default_checkout_country( $country ) {
  return 'RU'; // где RU это сокращенный код страны по умолчанию
}

Примечание

Полный список кодировок стран можно посмотреть тут