当前位置: 首页 > 面试题库 >

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

邹英光
2023-03-14
问题内容

我正在寻找一个代码片段,以获取今天每种产品的总销售额,因此可以在我的主题functions.php文件中使用它。

输出应如下所示(每个项目的总销售量):

Product xxx = 25 orders
Product yyy = 18 orders
Product zzz = 8 orders

问题答案:

这可以通过以下非常简单的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()

*使用CONVERT_TZ()SQL函数进行 *时区
调整( 将最后一个参数 调整'+10:00' 为与时区匹配的偏移量)

AND DATE(p.post_date) >= DATE(CONVERT_TZ( NOW(),'+00:00','+10:00'))


 类似资料:
  • 是否可能只得到最新的产品的木商订单?我知道笔记作为例子是可能的: 我能为订单中的产品做些类似的吗?

  • 根据订购的产品,我需要发送两封不同的“新订单”电子邮件。这种情况下,产品存储在不同的位置,我需要发送一封电子邮件,其中只包含存储1中的产品,另一封邮件包含存储2中的产品。如果仅订购了位于存储1的产品,则不应发送电子邮件2,反之亦然。 存储信息是每个产品上的自定义元字段。 我添加了一个自定义电子邮件类,它是的副本,但仅在需要时更改了名称。 我一直在寻找钩子和过滤器,但我不能一路走下去。我也一直在考虑

  • 我想按价格、日期和发布年份等项目对产品进行排序。在发布年份的情况下,我做了一个分类法=发布年份 但它是不工作.我怎么能改变代码可能排序按发布年份顺序?

  • WooCommerce将每个产品的总销量作为wp_postmeta表里,可以用get_post_meta获取,方法如下 在主题的functions.php中加入如下代码 //在shop页面显示总销量 add_action( 'woocommerce_after_shop_loop_item_title', 'wc_product_sold_count', 5 ); //在产品详情页面显示总销量 a

  • 问题内容: 好的,继续阅读WooCommerce 3.0+中的更改,似乎您无法再直接访问此类,因此我认为需要更改此代码,因为它会吐出一个错误: 但是,令人尴尬的是,我不确定如何更改此代码以在此类的最新版本中使用正确的新getter和setter函数,而该版本不再具有构造。如何正确执行此操作?我没有看到与上述相同的获取订单项的功能。 也许我在这里忽略了什么? 问题答案: 如果使用该 方法,则将获得

  • 我正在尝试为函数编写一个代码段。php文件,该文件仅显示所选变体的一个价格,因此忽略了在单个产品页面上随变体价格一起显示的价格范围。我正在使用以下代码: 问题是,例如,当您有两个单一产品的变体,而其中一个缺货时,此脚本会在单一产品页面上隐藏剩余变体的价格。我在想,也许每个产品都有一些可用的变体,并使用IF来使用标准的单一产品模板来显示它们。或者你有更好的办法解决这个问题?