Как настроить страницу оформления заказа на Woocomerce

Привет друзья!

Хочу помочь решить проблему настройки страницы оформления заказа в Woocommerce в стандартной теме Storefront. Настраиваем под украинский рынок с доставкой товаров по Новой почте.

Основным бесплатным плагином Новой почты был выбран Woo Shipping for Nova Poshta. Его можно скачать со стандартного магазина WordPress. Но при просмотре результата, необходимы поля выводятся не в том порядке. В своем время я перепробовал много вариантов плагинов, но все не давало нужных результатов.

Итак мой опыт внедрения.

Для начало необходимо произвести настройки Woocomerce. Переходи в консоли Woocommerce/Настройки/Основные и устанавливаем нужные настройки страны оплаты и получения товаров (см. на рисунке)

Затем переходим в настройки Доставка/Зона доставки и создаем самовывоз

Далее переходим в Доставка/Параметры доставки и устанавливаем следующие параметры

Переходим в настройки Доставка/Новая почта (надеюсь плагин установили и активировали) и прописываем API получить можно тут Новая Почта API ,    Город и склад отправления.

Далее переходи в настройки Внешний вид/Настроить и заходим в раздел Woocommerce

И заходим в раздел Оформления заказов, и устанавливаем следующие параметры:

Станицу конфиденциальности и правила тоже желательно указать, но их нужно создать заранее

Далее заходим в Настройки Woocommerce в раздел дополнительно и указываем страницу корзины странице Оформления заказов

Далее заходим в Страницы/Все страницы.оформления заказов и прописываем следующие шорт коды

Этим вы объединяете страницу корзину и оформления заказа, если вы не хотите это делать, пропустите этот шаг.

Далее немного магии, нужно зайти в во Внешний вид/Редактор и вверху справа выбрать тему Storefront или Storefront child если вы правильно используете дочерние темы (вот ссылка на правильную дочернюю тему Storefront хорошего человека тут. Если вы не знаете, что такое дочерние темы, забейте. (но лучше почитать)

Находим файл function.php и прописываем в нем следующий код в конце без изменений

add_filter( 'woocommerce_checkout_fields', 'awoohc_override_checkout_fields' );
function awoohc_override_checkout_fields( $fields ) {
	unset( $fields['billing']['billing_company'] );
	unset( $fields['billing']['billing_address_1']);
	unset( $fields['billing']['billing_address_2']);
	unset( $fields['billing']['billing_postcode']);
	unset( $fields['billing']['billing_state']);
	unset( $fields['billing']['billing_last_name']);
	unset( $fields['billing']['billing_city']);
	$fields['billing']['billing_first_name']['class'][0] = 'form-row-wide';
	$fields['billing']['billing_first_name']['label']          = 'ФИО';
	$fields['billing']['billing_email']['class'][0]      = 'form-row-last';
	$fields['billing']['billing_phone']['class'][0]      = 'form-row-first';
		
	return $fields;
} 

add_filter( 'woocommerce_default_address_fields', 'ole_override_checkout_fields' );
function ole_override_checkout_fields( $address_fields ) {
	$address_fields['address_1'][ 'required' ] = false;
	$address_fields['address_2'][ 'required' ] = false;
	$address_fields['postcode'][ 'required' ] = false;
	$address_fields['state'][ 'required' ] = false;
	$address_fields['city'][ 'required' ] = false;
			
	return $address_fields;
}

function custom_ordered_checkout_billing_fields( $fields ) {
	$order = array(
		'billing_first_name',
		'billing_phone',
		'billing_email',
		'billing_country',
		'billing_nova_poshta_region',
		'billing_nova_poshta_city',
		'billing_nova_poshta_warehouse',
	);

	foreach($order as $field) {
		$ordered_fields[$field] = $fields["billing"][$field];
	}

	$fields['billing'] = $ordered_fields;

	$fields['billing']['billing_first_name']['priority'] = 1;
	$fields['billing']['billing_phone']['priority'] = 2;
	$fields['billing']['billing_email']['priority'] = 3;
	$fields['billing']['billing_country']['priority'] = 4;
	$fields['billing']['billing_nova_poshta_region']['priority'] = 5;
	$fields['billing']['billing_nova_poshta_city']['priority'] = 6;
	$fields['billing']['billing_nova_poshta_warehouse']['priority'] = 7;

	return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'custom_ordered_checkout_billing_fields' );

функция unset удаляет поле из вида

[‘label’]          = ‘ФИО’; изменяет подпись поля на сайте из Имя на ФИО

[‘class’][0]      = ‘form-row-last’; делает поле последним ( ‘form-row-first’ — первым, ‘form-row-wide’ — на всю строку)

[ ‘required’ ] = false; удаляет обязательность поля

[‘priority’] = 2; изменяет номер по порядку в списке вывода

Да будет Вам счастье! Если нужны некоторые поля уберите из функций «unset». И не пытайтесь удалить страну, в версии woocommerce 3.5 и выше, будет ошибка адреса.

Благодарности прошу в отзывы, всегда приятно. Вопросы туда же.