Получить товары для заказа и WC_Order_Item_Product в Woocommerce 3

Хорошо, читая об изменениях в Woocommerce 3.0+, кажется, что вы больше не можете напрямую обращаться к этому классу, так что я бы предположил, что этот код нужно изменить, так как он выдает ошибку:

$order_item_id = 15;
$order_item = new WC_Order_Item_Product($order_item_id);
$return = $order_item->get_id() ? $order_item : false;

Но, смущающе, я не уверен, как изменить этот код, чтобы использовать правильные новые функции получения и установки в самой новой версии этого класса, которая больше не имеет конструкции. Как это сделать правильно? Я не вижу get функция получения позиции заказа таким же образом, как указано выше.
https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item_Product.html

Может быть, я что-то упускаю здесь?

13

Решение

Если вы используете get_id() метод, вы получите свой идентификатор товара, который 15 в вашем коде.

Получить идентификатор продукта:
Правильный метод WC_Order_Item_Product для получения идентификатора продукта: get_product_id()

Получить идентификатор заказа
Правильный метод WC_Order_Item_Product для получения идентификатора заказа: get_order_id()

Получить объект WC_Product
Правильный метод WC_Order_Item_Product для получения объекта WC_Product:
get_product()

Получить объект WC_Order
Правильный метод WC_Order_Item_Product для получения объекта WC_order:
get_order()

Получить и снять защиту данных и метаданных с помощью WC_Data методы:
get_data()
get_meta_data()


Получить WC_Product объект из идентификатора позиции заказа:

$order_item_id = 15;
$order_item = new WC_Order_Item_Product($order_item_id);

// The product ID
$product_id = $order_item->get_product_id();
// The order ID
$order_id = $order_item->get_order_id();

// The WC_Product object
$product = $order_item->get_product();
// The WC_Order object
$order = $order_item->get_order();

// The item ID
$item_id = $order_item->get_id(); // which is your $order_item_id

// The product name
$product_name = $order_item->get_name(); // … OR: $product->get_name();

//Get the product SKU (using WC_Product method)
$sku = $product->get_sku();

Получить элементы заказа от WC_Order объект (и использовать WC_product Object):

$order_id = 156; // The order_id

// get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// The loop to get the order items which are WC_Order_Item_Product objects since WC 3+
foreach( $order->get_items() as $item_id => $item_product ){
//Get the product ID
$product_id = $item_product->get_product_id();

//Get the WC_Product object
$product = $item_product->get_product();

// The product name
$product_name = $order_item->get_name(); // … OR: $product->get_name();

//Get the product SKU (using WC_Product method)
$sku = $product->get_sku();
}

Доступ и снятие защиты WC_Order_Item_Product данные:

Вы можете использовать все WC_Order_Item_Product data методы или вы можете снять защиту данных с помощью WC_Data следующие методы:

$order_id = 156; // The order_id

// get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// The loop to get the order items which are WC_Order_Item_Product objects since WC 3+
foreach( $order->get_items() as $item_id => $item_product ){

// Get the common data in an array:
$item_product_data_array = $item_product->get_data();

// Get the special meta data in an array:
$item_product_meta_data_array = $item_product->get_meta_data();

// Get the specific meta data from a meta_key:
$meta_value = $item_product->get_meta( 'custom_meta_key', true );

// get only additional meta data (formatted in an unprotected array)
$formatted_meta_data = $item->get_formatted_meta_data();
}

Как ссылки:

24

Другие решения

WC_Order_Item_Product наследуется от WC_Order_Item, который имеет get_order_id (), поэтому вы можете получить идентификатор заказа с

$order_item->get_order_id();
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector