Лучший и эффективный способ получить это - использовать следующий очень легкий SQL-запрос, который получит сумму всех итогов за последние 24 часа для статусов «обработки» и «выполненных» заказов:
function get_daily_purchases_total(){
global $wpdb;
return $wpdb->get_var( "
SELECT DISTINCT SUM(pm.meta_value)
FROM {$wpdb->prefix}posts as p
INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
WHERE p.post_type LIKE 'shop_order'
AND p.post_status IN ('wc-processing','wc-completed')
AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(NOW()) - (86400))
AND pm.meta_key LIKE '_order_total'
" );
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.
ИСПОЛЬЗОВАНИЕ Пример - Отображение общей суммы ежедневных покупок в формате:
<?php echo '<p>Total purchased of the day: ' . strip_tags( wc_price(get_daily_purchases_total() ) ) . '</p>'; ?>
Если вы хотите вместо этого получить общую сумму на основе даты "сегодня" , вы замените в коде следующую строку:
AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(NOW()) - (86400))
по этой строке:
AND DATE(p.post_date) >= CURDATE()