您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

获取Woocommerce中每种产品的今天的总订单数

获取Woocommerce中每种产品的今天的总订单数

这可以通过以下非常简单的SQL查询和foreach循环来完成。

这将为您提供过去24小时内按产品计数的订单的产品列表 (以及产品变体,但没有父变量产品)

global $wpdb;

$results = $wpdb->get_results( "
    SELECT DISTINCT woim.Meta_value as id, COUNT(woi.order_id) as count, woi.order_item_name as name
    FROM {$wpdb->prefix}woocommerce_order_itemMeta as woim
    INNER JOIN {$wpdb->prefix}woocommerce_order_items as woi ON woi.order_item_id = woim.order_item_id
    INNER JOIN {$wpdb->prefix}posts as p ON p.ID = woi.order_id
    WHERE p.post_status IN ('wc-processing','wc-on-hold')
    AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(Now()) - (86400))
    AND ((woim.Meta_key LIKE '_variation_id' AND woim.Meta_value > 0)
    OR (woim.Meta_key LIKE '_product_id'
    AND woim.Meta_value NOT IN (SELECT DISTINCT post_parent FROM {$wpdb->prefix}posts WHERE post_type LIKE 'product_variation')))
    GROUP BY woim.Meta_value
" );

// Loop though each product
foreach( $results as $result ){
    $product_id   = $result->id;
    $product_name = $result->name;
    $orders_count = $result->count;

    // Formatted Output
    echo 'Product: ' . $product_name .' (' . $product_id . ') = ' . $orders_count . '<br>';
}

经过测试和工作。

如果要改为根据“今天”日期获得总数,则将在此行中的代码中替换:

AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(Now()) - (86400))

通过这一行:

AND DATE(p.post_date) >= CURDATE()

调整( 将最后一个参数 调整'+10:00' 为与时区匹配的偏移量)

AND DATE(p.post_date) >= DATE(CONVERT_TZ( Now(),'+00:00','+10:00'))
其他 2022/1/1 18:38:40 有378人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶