Хорошо, прочитав об изменениях в 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();