1 php sql wordpress orders woocommerce
对于 Woocommerce,我在下面编写了代码,尝试获取今天的订单总购买量:
function order_total_woo_fahad(){
// Get orders from people named John that were paid in the year 2016.
$orders = wc_get_orders( array(
'date_paid' => '2018-07-03'
) );
$total_of_all=0;
for($i=0;$orders[i];$i++)
$total_of_all= $orders[i]->get_total();
return $total_of_all;
}
Run Code Online (Sandbox Code Playgroud)
但它返回空值。
我做错了什么?如何获取当天的订单总购买金额?
获得它的最好和有效的方法是使用以下非常轻量级的 SQL 查询,它将获得过去 24 小时内“处理”和“已完成”订单状态的所有订单总数:
function get_daily_purchases_total(){
global $wpdb;
return $wpdb->get_var( "
SELECT 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 = '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 = '_order_total'
" );
}
Run Code Online (Sandbox Code Playgroud)
代码位于活动子主题(或活动主题)的 function.php 文件中。测试和工作。
用法示例- 显示每日总购买的格式化金额:
<?php echo '<p>Total purchased of the day: ' . strip_tags( wc_price(get_daily_purchases_total() ) ) . '</p>'; ?>
Run Code Online (Sandbox Code Playgroud)
如果您想根据“今天”日期获得总数,您将在代码中替换这一行:
AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(NOW()) - (86400))
Run Code Online (Sandbox Code Playgroud)
通过这一行:
AND DATE(p.post_date) >= CURDATE()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2813 次 |
| 最近记录: |