Показать общий объем продаж в категории WooCommerce

Я пытаюсь перечислить общий объем проданной продукции в верхней части каждой страницы категории.

Зелье этой суммы будет пожертвовано, и мой клиент хочет объявить сумму. Я искал и пробовал вещи часами, и мне не повезло. Я нашел плагин, который отображает общие продажи для всего магазина, но я хочу только одну категорию.

Я попытался добавить еще один фильтр к этому плагину, но не повезло. Какие-нибудь мысли?

0

Решение

function getSaleAmountbyCategoryID($product_cat_id)
{
//first getting all the Product ID by Category ID
$pro_args = [
'post_type' => 'product',
'pages_per_post' => -1,
'post_status' => 'publish',
'fields' => 'ids',
'tax_query' => [
[
'taxonomy' => 'product_cat',
'field' => 'term_id', //This is optional, as it defaults to 'term_id'
'terms' => $product_cat_id, //(int)
]
]
];
$product_ids_query = new WP_Query($pro_args);

$include_product_id = $product_ids_query->posts;

//getting all the success orders
$args = [
'post_type' => 'shop_order',
'posts_per_page' => '-1',
'post_status' => ['wc-processing', 'wc-completed', 'wc-onhold']
];
$my_query = new WP_Query($args);

$total = 0;

$orders = $my_query->posts;
foreach ($orders as $ctr => $value)
{
$order_id = $value->ID;
//getting order object
$order = wc_get_order($order_id);

$items = $order->get_items();

foreach ($items as $item_data)
{
$product_id = $item_data['item_meta']['_product_id'][0];
if (in_array($product_id, $include_product_id))
{
//getting product object
//$_product = wc_get_product($product_id);
//$qty = $item_data['item_meta']['_qty'][0];
$pro_price = $item_data['item_meta']['_line_total'][0];
$total += $pro_price;
}
}
}
return $total;
}

Добавьте вышеуказанный код ^^ к вашей активной теме functions.php

ИСПОЛЬЗОВАНИЕ
В шаблоне страницы вашей категории товаров назовите его как

echo getSaleAmountbyCategoryID(21); //replace it by your product caregory ID

Пожалуйста, обратите внимание: Я не скажу, что это лучшее решение, так как оно будет медленным, если у вас 1000-й заказ. Если я найду лучшее решение, я обновлю свой ответ.

Надеюсь это поможет!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]