Выгрузка всех данных о пользователях и заказах

Нужно сделать выгрузку всех данных всех пользователей в woocommerce, т.е. собрать в массив и потом уже использовать данный массив к примеру для создания csv. А именно нужны такие поля:
user_id, first_name, last_name, email, phone, order_ids, total, discount, product_ids

order_ids - order_id всех заказов у текущего пользователя, нужно перечислить через запятую,
total - общая сумма, которую пользователь заплатил за товары,
discount - общая сумма скидок, к примеру по купонам,
product_ids - product_id всех товаров, которые пользователь купил, через запятую
т.е. в каждом ряду должна быть информация по отдельному пользователю.

Интересует такой вопрос:
подходит ли данный код для этой задачи?

$order_statuses = array('wc-completed');
$users = array();
$all_users = get_users();
foreach($all_users as $user){
    $_user = array();
    $order_ids = array();
    $total = array();
    $discount = array();
    $customer_orders = wc_get_orders( array(
        'meta_key' => '_customer_user',
        'meta_value' => $user->ID,
        'post_status' => $order_statuses,
        'numberposts' => -1,
    ) );
    foreach($customer_orders as $order){
        $order_ids[] = $order->get_id();
        $total[] = $order->get_total();
    }
    $_user['email'] = $user->user_emal;
    ...
    $users[] = $_user;
}

получается для каждого отдельного пользователя вызывается отдельный цикл по заказам, ведь пользователей может быть тысячи.
Есть ли вариант чтобы как-то оптимизировать данную задачу?
Может быть с помощью wpdb и sql-запросов.
И пользователи могут не иметь заказов, к примеру подписчики.

P.S.
таблицы, отвечающие за пользователей:
users: user_id,user_email,user_pass,user_login
usermeta: в этой таблице дополнительные поля пользователей(не обязательна) таблицы, связанные с заказоми:
posts: ID,post_title,post_status
postmeta: дополнительные поля заказов (второстепенная таблица с дополнительными. данными)
woocommerce_order_items: тут номер заказа и ссылка на таблицу с купленными товарами
woocommerce_order_itemmeta: тут список купленных товаров, данные товары привязаны к таблице woocommerce_order_items


Ответы (0 шт):