wc_get_order()
Отримує дані вказаного замовлення у Woocommerce. Це функція обгортка для отримання об’єкта замовлення, через який можна отримати будь-які дані самого замовлення та його елементів.
Працює на основі класу WC_Order_Factory .
Не всі дані замовлення можна отримати безпосередньо з об’єкта, деякі дані повинні використовувати спеціальні методи класу, див. приклади.
WC_Order_Factory::get_order()
Хуків немає.
Повертає
true|false|WC_Order|WC_Order_Refund.
При успішному отриманні замовлення поверне екземпляр об’єкта WC_Order:
Використання
$ order = wc_get_order ($ the_order);
- $the_order
(змішаний) - ID або об’єкт запису таблиці
wp_posts . Замовлення зберігаються як записи типу
shop_order .
Типово: false
Приклади
#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'];#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 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 );
}