Получить элементы заказа и 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; 

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

Может быть, я что-то пропустил?

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

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

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

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

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

Получение и WC_Data защиты данных и метаданных с использованием методов 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 

Получить элементы заказа из объекта WC_Order:

 $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 $item_product->get_product_id(); //Get the WC_Product object $item_product->get_product(); } 

Доступ и снятие защиты с WC_Order_Item_Продукция данных:

Вы можете использовать все WC_Order_Item_Product data или вы можете снять WC_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(); } 

Как ссылка: Как получить детали заказа WooCommerce

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

 $order_item->get_order_id();