Как добавить свои колонки в заказах Woocommerce

Все привет! Если вам приходится работать с заказами на woocommerce, то вы наверняка уже заметили, что для обработки заказов или получения какой либо информации о заказе приходится открывать его или использовать быстрый просмотр.

Было бы неплохо если бы у нас была вся нужна инфа по заказу сразу перед глазами. Предлагаю в этой записи разобраться как добавить свои колонки в заказах Woocomere. Этот способ поможет вам вывести, например, номер телефона, email адрес или информацию о платеже и так далее для более быстрой обработки заказов.

Код нужно вставлять в function.php вашей темы.

Шаг 1 — Добавляем колонки

При помощи фильтра manage_edit-shop_order_columns добавляем свои колонки в таблицу заказов woocommerce. В условии if(++$i==2) прописываете цифру, которая указывает положение колонок, т.е. после какой колонки будут выводиться ваши. Я добавил две колонки Email и Способ оплаты.

/** Добаление колонок в заказы */
function wpgid_new_shop_order_column( $columns ) {
	
	$out = array();
	foreach( $columns as $column_name => $column_info ){

		$new_columns[ $column_name ] = $column_info;

		// вставляем в нужное место - 2 - после 2-ой колонки
		if(++$i==2) {
			$new_columns['order_billing_email'] = 'Email';
			$new_columns['order_payment_method'] = 'Способ оплаты';
		}

	}

	return $new_columns;
}
add_filter( 'manage_edit-shop_order_columns', 'wpgid_new_shop_order_column' );

Шаг 2 — Заполняем колонки

Далее добавляем код, который будет заполнять колонки данными. В моём случае это будут email адреса, и информация о платеже (способ оплаты и ID транзакции).

/** Заполняем колонки */
function wpgid_new_shop_order_column_content( $column ) {
	global $post;
	$order  = wc_get_order( $post->ID );
	$data	= $order->get_data(); // данные заказа

	switch ( $column ) {
		case 'order_billing_email':
			echo $data['billing']['email'];
			break;
		case 'order_payment_method':
			echo $data['payment_method_title'];
			echo '<br>';
			echo $data['transaction_id'];
			break;
	}
}
add_action( 'manage_shop_order_posts_custom_column', 'wpgid_new_shop_order_column_content' );

Шаг 3 — Меняем ширину колонок

Если нужно изменить ширину колонок, то воспользуйтесь следующим кодом. Я указал ширину для колонки order_payment_method — 15%.

/** подправим ширину колонки через css */
add_action('admin_head', 'add_views_column_css');
function add_views_column_css(){
	echo '<style type="text/css">#order_payment_method{ width:15%; }</style>';
}

Данные заказа

Ниже вы можете найти готовые данные заказа, чтобы использовать в своем коде. Данные используем на втором шаге для заполнения столбца.

// получаем объект WC_Order
$order = wc_get_order( 65 );

$data = $order->get_data(); // данные заказа
echo $data['id'];
echo $data['parent_id'];
echo $data['status'];
echo $data['currency'];
echo $data['version'];
echo $data['payment_method'];
echo $data['payment_method_title'];

// получаем отформатированную дату через метод date()
echo $data['date_created']->date('Y-m-d H:i:s');
echo $data['date_modified']->date('Y-m-d H:i:s');

// получаем метку времени через метод getTimestamp()
echo $data['date_created']->getTimestamp();
echo $data['date_modified']->getTimestamp();

// еще данные
echo $data['discount_total'];
echo $data['discount_tax'];
echo $data['shipping_total'];
echo $data['shipping_tax'];
echo $data['cart_tax'];
echo $data['total_tax'];
echo $data['customer_id']; // ... and so on

// billing - выписка счета
echo $data['billing']['first_name'];
echo $data['billing']['last_name'];
echo $data['billing']['company'];
echo $data['billing']['address_1'];
echo $data['billing']['address_2'];
echo $data['billing']['city'];
echo $data['billing']['state'];
echo $data['billing']['postcode'];
echo $data['billing']['country'];
echo $data['billing']['email'];
echo $data['billing']['phone'];

// shipping - доставка
echo $data['shipping']['first_name'];
echo $data['shipping']['last_name'];
echo $data['shipping']['company'];
echo $data['shipping']['address_1'];
echo $data['shipping']['address_2'];
echo $data['shipping']['city'];
echo $data['shipping']['state'];
echo $data['shipping']['postcode'];
echo $data['shipping']['country'];
Дмитрий Шкурин
Автор: Дмитрий Шкурин
Web дизайнер, программист, блогер. Профессионально занимаюсь созданием сайтов под управлением Wordpress, делюсь личным опытом.
WordPress Gid
Комментарии
0
Добавить комментарий
Нажимая на кнопку "Отправить", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.