【问题标题】:List Coupon with order details in WooCommerce在 WooCommerce 中列出带有订单详细信息的优惠券
【发布时间】:2019-03-16 17:23:23
【问题描述】:

我有一个包含 1000 张优惠券的网站。所有优惠券的使用限制为一张。我使用 Raunuk Gupta 提供的代码直接从 SQL 数据库导出优惠券。

How WooCommerce Coupons are stored in Database?

是否可以检索使用优惠券的用户的订单元数据?我想在报告中包含用户的姓名、电子邮件地址以及可能的其他一些自定义字段。

谢谢。

  • 我们生成 1000 张优惠券并将其提供给公司(客户)。
  • 每张优惠券的使用限制为 1。
  • 公司随后在其成员之间分发优惠券。
  • 在月底,我们需要向公司发送一份报告,告诉他们:
    1. 使用了 1000 张优惠券中的多少。 (这可以通过上面链接中提供的代码来完成)
    2. 然后从使用过的优惠券中,我们需要告诉他们谁使用了它,也就是下订单的用户的姓名和电子邮件地址。

LINK TO SAMPLE EXCEL EXPORT - 黄色字段来自优惠券 - 蓝色字段来自订单

【问题讨论】:

  • 必填字段:ID |优惠券代码 |优惠券说明 |折扣类型 |优惠券金额 | product_ids |产品类别 |使用限制 |总使用量 | order_id |帐单电子邮件 | billing_first_name | billing_last_name | order_total

标签: mysql database wordpress woocommerce coupon


【解决方案1】:

下面的 MySQL 查询将列出您与 Order 关联的所有优惠券。

SELECT pc.post_title AS coupon_name,
       pc.post_excerpt AS coupon_description,
       Max(CASE WHEN pmc.meta_key = 'discount_type'      AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS discount_type,
       Max(CASE WHEN pmc.meta_key = 'coupon_amount'      AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS coupon_amount,
       Max(CASE WHEN pmc.meta_key = 'product_ids'        AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS product_ids,
       Max(CASE WHEN pmc.meta_key = 'product_categories' AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS product_categories,
       Max(CASE WHEN pmc.meta_key = 'customer_email'     AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS customer_email,
       Max(CASE WHEN pmc.meta_key = 'usage_limit'        AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS usage_limit,
       Max(CASE WHEN pmc.meta_key = 'usage_count'        AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS total_usaged,
       po.ID AS order_id,
       MAX(CASE WHEN pmo.meta_key = '_billing_email'      AND po.ID = pmo.post_id THEN pmo.meta_value END) AS billing_email,
       MAX(CASE WHEN pmo.meta_key = '_billing_first_name' AND po.ID = pmo.post_id THEN pmo.meta_value END) AS billing_first_name,
       MAX(CASE WHEN pmo.meta_key = '_billing_last_name'  AND po.ID = pmo.post_id THEN pmo.meta_value END) AS billing_last_name,
       MAX(CASE WHEN pmo.meta_key = '_order_total'        AND po.ID = pmo.post_id THEN pmo.meta_value END) AS order_total
FROM `wp_posts` AS pc
INNER JOIN `wp_postmeta` AS pmc ON  pc.`ID` = pmc.`post_id`
INNER JOIN `wp_woocommerce_order_items` AS woi ON pc.post_title = woi.order_item_name
    AND woi.order_item_type = 'coupon'
INNER JOIN `wp_posts` AS po ON woi.order_id = po.ID
    AND po.post_type = 'shop_order'
    AND po.post_status IN ('wc-completed', 'wc-processing', 'wc-refunded') -- Added needed order status over here.
INNER JOIN `wp_postmeta` AS pmo ON po.ID = pmo.post_id
WHERE pc.post_type = 'shop_coupon'
GROUP BY po.ID
ORDER BY pc.ID DESC,
         po.ID DESC
LIMIT 0, 10 -- modify it accordingly.

希望这会有所帮助!

【讨论】:

  • 谢谢!这适用于导出带有相关订单信息的优惠券。但是,我希望将导出作为您提供的初始优惠券导出代码,但只是添加了订单详细信息的列,如果有的话。
  • 我希望得到与以前完全相同的列表,但如果“total_usaged”的最后一个字段为 1,那么我想查看使用该优惠券的人的姓名和电子邮件。如果“total_usaged”字段为 NULL 或 0,则名称电子邮件的附加列将为空。那可能吗?比你
  • @user1664798:我没听明白,您能否用一个示例更新您的问题,并列出您想要在导出中列出的列。
  • 谢谢,我已经更新了问题,添加了一个示例 excel 文件,还添加了列标题作为单独的评论。非常感谢。
  • @user1664798:我已经更新了我的答案。请检查这是否会获取所需的结果。
猜你喜欢
  • 2018-05-11
  • 2017-05-26
  • 1970-01-01
  • 2019-07-02
  • 2021-05-02
  • 2017-09-24
  • 2017-12-12
  • 2021-10-23
  • 1970-01-01
相关资源
最近更新 更多