Я создаю пользовательский отчет с помощью WooCommerce, и он работает, но он использует массу ресурсов, и он должен быть намного больше, и время ожидания увеличится, если я увеличу его размер.Я уверен, что есть лучший способ сделать это.
Я выполняю несколько запросов, чтобы увидеть, сколько продуктов определенных цветов и размеров было заказано.В настоящее время это отдельные запросы и они не эффективны.Вот мой код:
Это функция, которая получает заказанное количество:
function get_order_by_product_id($product_id, $product_color, $product_size) {
$args = array (
'limit' => '-1',
'status' => 'processing',
);
$orders = wc_get_orders( $args );
if($orders) :
$total = 0;
foreach( $orders as $order) :
$order_id = $order->get_id();
$single_order = wc_get_order( $order_id );
foreach ($single_order->get_items() as $item_id => $item_data) :
$product = $item_data->get_product();
$productID = $single_order->get_item_meta($item_id, '_product_id', true);
$product_name = $product->get_name();
$color = $single_order->get_item_meta($item_id, 'pa_colors', true);
$size = $single_order->get_item_meta($item_id, 'pa_sizes', true);
$item_quantity = $item_data->get_quantity();
if($productID == $product_id && $color == $product_color && $size == $product_size ) :
$total += $item_quantity;
endif;
endforeach;
endforeach;
echo $total;
endif;
}
Это вызов функции:
get_order_by_product_id(47652, 'black', 'xs');
В настоящее время вДля того, чтобы сделать это, я вызываю функцию снова и снова для каждого идентификатора продукта, цвета и размера.Как я уже сказал, это работает, но это боров ресурсов.
Буду признателен за любые идеи по повышению эффективности!