Как получить заказы пользователя в Wordpress? - PullRequest
1 голос
/ 28 февраля 2020

Wordpress версия 5.3.2 Woocommerce версия 3.8.1

Чтобы получить Показать пользователю его купленных заказов вместе с order_items (продукты в заказ)

То, что я пробовал

Пила Как получить детали заказа WooCommerce , Получить некоторые данные о заказе и элементах заказа в Электронная почта Woocommerce , https://github.com/woocommerce/woocommerce/wiki/wc_get_orders-and-WC_Order_Query

Все еще не могу решить мою проблему.

Ошибка, с которой я сталкиваюсь

Неустранимая ошибка: необученная ошибка: вызов функции-члена get_id () для массива

Код

//got the user
$user = wp_get_current_user();
//In my case $user->ID returns 1

$args = array(
    'customer_id' => $user->ID,
    'status' => 'confirmed',
);
//Since i only want the confirmed orders
$order= wc_get_orders( $args );
$order_id  = $order->get_id();

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Я боролся немного больше после принятого решения. Первоначально я получал полный массив заказов, после итерации по этому массиву я нашел то, что искал.

    $user = wp_get_current_user();
    $args = array(
    //'customer_id' => $user->ID
    'customer_id' => 6
);
    $orders = wc_get_orders($args);
    foreach($orders as $order){
        $order_id  = $order->get_id();        
        echo $order_id . "<br/>";
    }

Этот foreach позволил получить доступ к требуемому идентификатору order_id.

0 голосов
/ 28 февраля 2020

Как видно из документов , wc_get_orders возвращает array или stdClass. Сообщение об ошибке говорит вам, что вы не можете вызвать get_id из array, поэтому у вас есть array. Потому что клиент, с которым вы ищете, имеет несколько подтвержденных заказов. Решение:

//...
$orders = wc_get_orders( $args );
if (!is_array($orders)) $orders = [$orders];
//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...