WC_Order позиции пусто - PullRequest
0 голосов
/ 25 июня 2018

это очень странно, я звоню $order = new WC_Order(52);, и я получаю объект правильного порядка, но массив Items пуст.

Есть идеи, что не так?

Я использую WooCommerce 3.4.3.

1 Ответ

0 голосов
/ 26 июня 2018

Я тоже думал, что то, что вы делаете, должно работать, но на самом деле это неправильно.Я прочитал исходный код WooCommerce, и вот как это делает WooCommerce.

if ( ! $order = wc_get_order( $order_id ) ) {
    return;
}
$order_items = $order->get_items( apply_filters( 'woocommerce_purchase_order_item_types', 'line_item' ) );

Вызов $ order-> get_items () проверит, была ли позиция прочитана из хранилища данных, и прочитает ее, если онаеще не был прочитан.Таким образом, новый WC_Order (52) фактически только частично инициализирует объект заказа.Элементы заказа инициализируются позже, когда к ним осуществляется доступ через заказ.Это может быть более эффективным, поскольку элементы, которые не используются, не будут инициализированы.Обратите внимание, что заказ создается с помощью функции wc_get_order ().Вы должны сделать это вместо нового WC_Order (), так как он использует фабрику для создания заказа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...