我正在尝试创建统计脚本,明确用于Woocommerce的产品预订,diplaying可用,保留和售出状态。状态订单在后端管理面板中可用,但我需要在前端进行计数和显示。
示例:
产品名称
可用物品:10
已保留的项目(但尚未付款):X
已售商品:Y
目前,woocommerce有一项功能,显示每件产品的销售数量,但它既包括保留(待定状态)又包括已售出(已完成),因此它的数量不同。
我写了一个查询,应该找到与待处理状态匹配的订单(wp_term_relationships.term_taxonomy_id = 46 ),但我不能只选择一个特定产品,因为它会计算数据库中的所有待处理订单。 wp_posts.ID和wp_woocommerce_order_itemmeta.meta_value = 250 的产品ID相同。
请注意,产品和订单位于同一个表格中: wp_posts 。
这是我的问题:
SELECT COUNT(DISTINCT wp_posts.ID)
FROM wp_posts, wp_postmeta, wp_term_relationships, wp_woocommerce_order_itemmeta oi
WHERE wp_posts.ID = wp_postmeta.post_id
AND wp_posts.post_status = 'publish'
AND wp_posts.ID = wp_postmeta.post_id
AND oi.meta_key = '_product_id'
AND oi.meta_value = 250
AND wp_posts.post_type = 'shop_order'
AND wp_term_relationships.object_id = wp_posts.ID
AND wp_term_relationships.term_taxonomy_id = 46
如何选择只计算这一产品的任何想法?我觉得我只需要一个文件管理器,但无法弄清楚缺少什么。提前谢谢。
答案 0 :(得分:0)
看看下面的内容并试一试。可能需要一些调整 更新:
SELECT COUNT(*)
FROM wp_posts, wp_postmeta, wp_term_relationships, wp_woocommerce_order_itemmeta oi
WHERE wp_posts.ID = wp_postmeta.post_id
AND wp_posts.post_status = 'publish'
AND wp_posts.ID = wp_postmeta.post_id
AND wp_posts.ID= oi.meta_id
AND oi.metakey = '_product_id'
AND oi.metavalue = 250
AND wp_posts.post_type = 'shop_order'
AND wp_term_relationships.object_id = wp_posts.ID
AND wp_term_relationships.term_taxonomy_id = 46
答案 1 :(得分:0)
我找到了解决方案!
正如我怀疑我需要再过一个表来过滤,这就完成了整个过程!
所以缺少这一行: ii.order_id = wp_posts.ID ,以及其他一些调整;)
SELECT COUNT(DISTINCT wp_posts.ID)
FROM wp_posts, wp_postmeta, wp_term_relationships, wp_woocommerce_order_itemmeta oi, wp_woocommerce_order_items ii
WHERE wp_term_relationships.term_taxonomy_id = (xx - order status id)
AND wp_term_relationships.object_id = wp_posts.ID
AND oi.order_item_id = ii.order_item_id
AND oi.meta_key = '_product_id'
AND oi.meta_value = (yy - specific product id, the same id as in wp_posts)
AND ii.order_id = wp_posts.ID
AND wp_postmeta.post_id = wp_term_relationships.object_id
AND wp_posts.post_status = 'publish'
请务必不要选择' shop_order"发布类型,因为它会给出错误的结果:)并注意,完整的状态可能只有更多的值,因为woocommerce有完成,删除,付费和取消订单的不同状态值。
我希望这对其他人有帮助:))
非常感谢 Kiril 指导我找到这个解决方案!