wc_get_order() WC 2.2

Отримує дані вказаного замовлення у Woocommerce. Це функція обгортка для отримання об’єкта замовлення, через який можна отримати будь-які дані самого замовлення та його елементів.

Працює на основі класу WC_Order_Factory .

Не всі дані замовлення можна отримати безпосередньо з об’єкта, деякі дані повинні використовувати спеціальні методи класу, див. приклади.

Працює на основі:
WC_Order_Factory::get_order()

Хуків немає.

Повертає

true|false|WC_Order|WC_Order_Refund.

При успішному отриманні замовлення поверне екземпляр об’єкта WC_Order:

WC_Order Object (
	[order_type] => simple
	[id] => 41863
	[post] => WP_Post Object (
			[ID] => 41863
			[post_author] => 1
			[post_date] => 2017-12-14 00:29:56
			[post_date_gmt] => 2017-12-13 21:29:56
			[post_content] =>
			[post_title] => Order – December 14, 2017 @ 12:29 ДП
			[post_excerpt] =>
			[post_status] => wc-pending
			[comment_status] => open
			[ping_status] => closed
			[post_password] => order_5a319bd4d901c
			[post_name] => zakaz-ndash-dec-13-2017-09-29-pm
			[to_ping] =>
			[pinged] =>
			[post_modified] => 2017-12-14 00:29:56
			[post_modified_gmt] => 2017-12-13 21:29:56
			[post_content_filtered] =>
			[post_parent] => 0
			[guid] => http://auto.com/?post_type=shop_order&p=41863
			[menu_order] => 0
			[post_type] => shop_order
			[post_mime_type] =>
			[comment_count] => 0
			[filter] => raw
		)

	[order_date] => 2017-12-14 00:29:56
	[modified_date] => 2017-12-14 00:29:56
	[customer_message] =>
	[customer_note] =>
	[post_status] => wc-pending
	[prices_include_tax] =>
	[tax_display_cart] => excl
	[display_totals_ex_tax] => 1
	[display_cart_ex_tax] => 1
	[billing_email] => [email protected]
	[formatted_billing_address:protected] =>
	[formatted_shipping_address:protected] =>
)

Використання

$ order = wc_get_order ($ the_order);
$the_order
(змішаний)
ID або об’єкт запису таблиці
wp_posts . Замовлення зберігаються як записи типу
shop_order .


Типово: false

Приклади

1

#1 Приклад отримання даних замовлення

// Отримуємо екземпляр об'єкта WC_Order
$ order_id = 35;
$ order = wc_get_order ($ order_id);

// отримаємо ID замовлення
$order_id = $order->get_id(); //> 35

// Отримаємо ID покупця
$order_id = $order->get_user_id(); //> 5

// отримаємо елементи замовлення, детальніше нижче...
$order->get_items();

// ... і т.д.

Отримати дані замовлення у вигляді масиву можна за допомогою методу WC_Order::get_data()

Увага! метод get_data() працює із версії WC 3.0.

// Отримуємо об'єкт 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'];
echo $data['payment_method'];
echo $data['payment_method'];

// Отримуємо відформатовану дату через метод date()
echo $data['date_created']->date('Ymd H:i:s');
echo $data['date_modified']->date('Ymd 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'];
0

#2 Елементи замовлення

Для отримання елементів замовлення потрібно використовувати спеціальні методи, які звертаються до класів:

Тобто. не можна звернутися до елементів замовлення безпосередньо з об’єкта WC_Order – лише через спеціалізовані методи.

$ order = wc_get_order (65);

$order_items = $order->get_items();

foreach( $order_items as $item_id => $item ){

	// Методи класу WC_Order_Item

	// ID елемента можна отримати з ключа масиву або так:
	$item_id = $item->get_id();

	// Методи класу WC_Order_Item_Product

	$item_name = $item->get_name(); // Name of the product
	$item_type = $item->get_type(); // Type of the order item ("line_item")

	$product_id = $item->get_product_id(); // the Product id
	$wc_product = $item->get_product(); // the WC_Product об'єкт

	// дані елемента замовлення як масиву
	$item_data = $item->get_data();

	echo $item_data['name'];
	echo $item_data['product_id'];
	echo $item_data['variation_id'];
	echo $item_data['quantity'];
	echo $item_data['tax_class'];
	echo $item_data['subtotal'];
	echo $item_data['subtotal_tax'];
	echo $item_data['total'];
	echo $item_data['total_tax'];

}

Метод get_data() дозволяє отримати захищені дані.

список змін

З версії 2.2Введено.

Код wc_get_order() WC 6.8.2

function wc_get_order( $the_order = false ) {
	if ( ! did_action( 'woocommerce_after_register_post_type' ) ) {
		wc_doing_it_wrong( __FUNCTION__, 'wc_get_order не повинен бути названий перед тим, як типи є registered (woocommerce_after_register_post_type action)', '2.5' );
		return false;
	}
	return WC()->order_factory->get_order( $the_order );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *