Добавление кастом полей на странице после заказа

Добавление кастом полей на странице после заказа

Konark 23 апреля, 2021 Комментариев (0)

Сегодня я расскажу про то, как добавить ваши пользовательские поля в страницу после заказа (checkout). Так как просто добавить их на страницу формирования заказа — мало.

Как добавить редактируемые поля на страницу заказа в админке, мы уже знаем.

Итак, все что нам нужно, это добавить такой код в functions.php:

add_filter( 'woocommerce_order_formatted_billing_address' , 'woo_custom_order_formatted_billing_address', 10, 2 );
function woo_custom_order_formatted_billing_address( $billing, $order ) {
	$billing = array(
		'gender' 		=> get_formatted_gender( get_post_meta( $order->get_id(), '_billing_gender', true ) ),
		'title'			=> get_post_meta( $order->get_id(), '_billing_title', true ),
		'first_name'    => $order->get_billing_first_name(),
		'last_name'     => $order->get_billing_last_name(),
		'addition' 		=> get_post_meta( $order->get_id(), '_billing_addition', true ),
		'company'       => $order->get_billing_company(),
		'address_1'     => $order->get_billing_address_1(),
		'address_2'     => $order->get_billing_address_2(),
		'city'          => $order->get_billing_city(),
		'state'         => $order->get_billing_state(),
		'postcode'      => $order->get_billing_postcode(),
		'country'       => $order->get_billing_country()
	);

	return $billing;
}

Давайте разберем код подробней. Изначально мы вешаемся на хук «woocommerce_order_formatted_billing_address», и принимаем два параметра, один из них это массив с данными, которые мы будем выводить и мы его переопределяем. Второй — это объект заказа. Этот объект содержит данные о заказе, в том числе стандартные поля. И в переопределенном массиве мы можем их добавить (или не добавлять) с помощью вызова методов класса, например:

'country' => $order->get_billing_country()

Но, методов для получения наших полей в классе нет, мы будем использовать стандартную функцию для получения пост меты заказа с помощью ID. Например:

'title' => get_post_meta( $order->get_id(), '_billing_title', true ),

Где «$order->get_id()» — это ID заказа, а второй атрибут и есть название нашего кастом поля. Третий атрибут при значении true вернет значение метаполя, иначе массив значений, что нам не нужно. По умолчанию: false.

В итоге мы получаем такой результат:

Где 1, 2 и 4 строка — наши кастом поля

P.S.: На функцию get_formatted_gender не обращайте внимание, это моя пользовательская функция для корректного формирования пола юзера.

Просмотров: 114

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

Ваш e-mail не будет опубликован. Имя и e-mail обязательны для заполнения.