/ Плагины / Настройка адресов Woocommerce

Настройка адресов Woocommerce

HIT

14.11.2021

1344

В woocommerce существует 2 типа адресов: billing (адрес плательщика) и shipping (адрес доставки). Поля в обоих типах адресов дублируются. Для нашей страны более характерно использовать billing для данных клиента (без указания адреса), а shipping для адреса доставки (без указания имени и фамилии). Так легче настроить оформление заказа, а именно отключение полей доставки если выбран, например, самовывоз.

Изменяем набор полей

Отключаем лишние поля в каждом из адресов:

// Удаляем поля из адресов Плательщика и Доставки

add_filter( 'woocommerce_billing_fields' , 'custom_override_billing_fields' );

function custom_override_billing_fields( $fields ) {
	//unset($fields['billing_country']); //нельзя отключать ибо не сработает сохранение
	unset($fields['billing_address_1']);
	unset($fields['billing_address_2']);	
	unset($fields['billing_city']);
	unset($fields['billing_state']);
	unset($fields['billing_postcode']);
	return $fields;
}


add_filter( 'woocommerce_shipping_fields' , 'custom_override_shipping_fields' );

function custom_override_shipping_fields( $fields ) {
	unset($fields['shipping_first_name']);
	unset($fields['shipping_last_name']);
	unset($fields['shipping_company']);
	//unset($fields['shipping_country']); //нельзя отключать ибо не сработает сохранение
	unset($fields['shipping_state']);
	unset($fields['shipping_postcode']);
	unset($fields['shipping_address_2']);
	
	//$fields['shipping_city']['data-priority'] = '10';
	
	$fields['shipping_city']   = array(
		'label'        => 'Населённый пункт',
		'required'     => true,
		'class'        => array( 'form-row-wide', '' ),
		'placeholder'  => 'Населённый пункт',
		'priority'     => 20,
	);
	
	return $fields;
}

Данными хуками мы отключаем поля только во вкладке Адреса личного кабинета. Хук woocommerce_default_address_fields отключает поле глобально, при этом даже не нужно указывать префикс billing_ или shipping_. Хук woocommerce_checkout_fields отключает поля только в оформлении.

Изменяем заголовки адресов в ЛК

add_filter( 'woocommerce_my_account_get_addresses', 'er45d_woo_change_title_account' );
function er45d_woo_change_title_account( $account_title ) {
	$account_title = array(
		'billing' => __( 'Данные плательщика', 'text-domain' ),
		'shipping' => __( 'Адрес доставки', 'text-domain' ),
	);
	
	return $account_title;
}

Добавить в вывод информации о плательщике телефон и email

if( is_wc_endpoint_url( 'edit-address' ) ) {

	add_filter( 'woocommerce_my_account_my_address_formatted_address', 'er34d_formatted_address',10, 3 );
	function er34d_formatted_address( $args, $customer_id, $name ){
		$args['phone'] = get_user_meta( $customer_id, $name . '_phone', true );
		$args['email'] = get_user_meta( $customer_id, $name . '_email', true );
		return $args;
	} 


	add_filter( 'woocommerce_localisation_address_formats', 'fe45_localisation_address_formats');
	function fe45_localisation_address_formats( $formats ){
		foreach ( $formats as $key => &$format ) {
			$format .= "\n{phone}";
			$format .= "\n{email}";
		}
		return $formats;
	}


	add_filter( 'woocommerce_formatted_address_replacements', 'er45_formatted_address_replacements', 10, 2 );
	function er45_formatted_address_replacements( $replacements, $args ){

		$replacements['{phone}'] = $args['phone'];
		$replacements['{email}'] = $args['email'];

		return $replacements;
	}

}

Поделиться в соц. сетях:

  • Похожие записи
  • Комментарии
  • Вложения
Доработка функционала Woocommerce

Доработка функционала Woocommerce

Продолжаем дорабатывать различные аспекты модуля Woocommerce. Общий вес заказа Чтобы выводить общий вес заказа, нужно в шаблонах cart-totals.php (в корзине) и/или review-order.php (в заказе) добавить следующий код (перед закрывающим тегом Читать далее »

/ /
Изменение методов доставки в зависимости от условий

Изменение методов доставки в зависимости от условий

При оформлении товара мы можем задавать условия для вывода методов доставки, а также менять их стоимость. В данном примере при достижении сумм 1000 и 5000 методы доставки становятся бесплатными. Закомментирован Читать далее »

/
Связывание товаров

Связывание товаров

Если товары продаются несколькими частями, но части нужно связать чтобы одну без другой нельзя было приобрести, можно связать такие товары. Как вариант такие товары можно заводить как один товар (в Читать далее »

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

Пока нет комментариев. Будь первым!

Настройка адресов Woocommerce
Градиенты
Рекомендации для васГрадиентыOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.