【问题标题】:how to delete completed orders in woocommerce using a my sql query如何使用我的 sql 查询在 woocommerce 中删除已完成的订单
【发布时间】:2014-09-14 06:41:54
【问题描述】:

我想使用单个 sql 查询删除 woocommerce 中已完成的所有订单。因为,我的WordPress Dashboard 有问题。我无法从后端查看已完成的订单。越来越空白了我有7,823 Completed Orders。我希望这就是我在查看Completed Orders 时看到白页的原因。

有没有办法,我可以使用 MySQL 查询删除所有 Completed Orders。所以,我可以在PHPMYADMIN 中运行它。

有什么建议。

【问题讨论】:

  • 您是否检查过是否存在 PHP 错误,这就是出现白页的原因?通常原因
  • 关于编程和管理的 WordPress 问题最好在 wordpress.stackexchange.com 上提问
  • @AndyHolmes 这个网站已经工作了 3 年多了。从昨天开始我们就遇到了这个问题。阿洛斯,我从Live Website 进行了备份并创建了本地站点。当我更改 memory limit 之类的设置时,它工作正常。当我扭转它。同样的问题。
  • 是的,但是你升级了 wordpress 吗?如果你有,那就是为什么。这将是 PHP 错误而不是数据库问题。删除已完成的订单似乎很愚蠢,尤其是如果您将来遇到订单问题
  • @AndyHolmes 谢谢,我没有更新WordPress or PHP version on my server。你能告诉我如何跟踪这个问题吗?

标签: php mysql wordpress woocommerce


【解决方案1】:

Woocommerce 订单存储在 post 表、postmeta 表、woocommerce_order_itemswoocommerce_order_itemmeta 表中。订单的各个部分存储在不同的表中。此外,订单状态通过存储订单状态列表的taxonomies 进行管理。 任何正在/将要编写此查询的人都必须至少编写 5-6 个查询或 单个大连接查询。

所以,如果您没有更大的产品设置,我建议您卸载 WooCoommerce。为此,您可以关注this link,这将删除数据

【讨论】:

  • 在你发帖之前我已经这样做了。但是,我将其标记为答案。顺便说一句,不要这样做。这不是一个适当的解决方案。但是,暂时我也这样做了。 :)
【解决方案2】:

我的解决方案是删除所有订单(如果您要从有演示数据的商店转移到新网站)。您可以使用以下 SQL 查询来执行此操作。

DELETE FROM wp_woocommerce_order_itemmeta
DELETE FROM wp_woocommerce_order_items
DELETE FROM wp_comments WHERE comment_type = 'order_note'
DELETE FROM wp_postmeta WHERE post_id IN ( SELECT ID FROM wp_posts WHERE post_type = 'shop_order' )
DELETE FROM wp_posts WHERE post_type = 'shop_order'

【讨论】:

    【解决方案3】:

    要最大限度地使用原生 Woocommerce 功能,您可以按照以下方式进行。 使用 SQL 将所有订单移至回收站:

    UPDATE wp_posts SET post_status = 'trash' WHERE post_type = 'shop_order';
    

    然后转到 Woocommerce -> 订单 -> 垃圾箱 并点击 清空垃圾箱

    【讨论】:

    • 对我来说似乎是一个很好的解决方案。除了Empty Trash 例程如果有很多订单(在我的情况下为 5000+),仍然容易触发脚本超时。
    • 36,000 个订单并给我 503 服务不可用每 10 分钟仅删除 3000 个订单
    【解决方案4】:

    要删除状态为已完成的订单,您只能使用以下代码。

    UPDATE wp_posts 
    SET post_status = 'trash' 
    WHERE post_type = 'shop_order'
    AND post_status = 'wc-completed'
    

    此代码并未完全消除系统或基础 订购数据,将其发送到垃圾箱。


    你想永久删除订单吗?,你必须去:

    Woocommerce > 订单 > 垃圾箱并点击清空垃圾箱。


    如果你想消除其他订单,你应该只知道Woocommerce中存在的不同状态:

    1. wc-完成
    2. wc-待处理
    3. wc 处理
    4. wc-on-hold
    5. wc-取消
    6. wc-退款
    7. wc 失败

    您在子句 IN ('status') 中指定它们

    UPDATE wp_posts 
    SET post_status = 'trash' 
    WHERE post_type = 'shop_order'
    AND post_status IN ('wc-pending', 'wc-processing', 'wc-on-hold', 'wc-cancelled', 'wc-refunded', 'wc-failed')
    

    【讨论】:

      【解决方案5】:

      我首先将所有相关订单设置为垃圾箱,从而解决了这个问题:

      UPDATE wp_posts SET post_status = 'trash' WHERE post_type = 'shop_order';
      

      如果您在按 Empty Trash 时有太多帖子需要通过,并且出现 PHP 错误,您可以运行以下 SQL 来删除它们:

      DELETE FROM wp_posts
      WHERE post_type = 'shop_order' 
      AND post_status = ‘trash’
      

      【讨论】:

        【解决方案6】:

        我刚刚在 https://wordpress.org/support/topic/tip-how-to-delete-all-your-orders-and-save-you-time/#post-12290285 的 WP CLI 中使用了这个 sn-p

        警告:这会删除所有订单,您必须根据自己的情况进行调整(仅完成),请参阅:https://developer.wordpress.org/cli/commands/post/list/

        wp post list --field=ID --post_type=shop_order --posts_per_page=2000 | xargs wp post delete --force

        the official WooCommerce Subscriptions plugin合作,相关订阅也已被删除。

        【讨论】:

          【解决方案7】:

          我在搜索“使用 wp cli 删除 woocommerce 上失败的订单”时发现了这篇文章,但 Google 将我发送到这里。因此,我将为将来可能需要它的人添加我的解决方案!

          您可以使用 WP CLI 工具轻松做到这一点:

          wp post delete $(wp post list --post_type=shop_order --post_status=wc-completed --format=ids)
          

          如果您想删除并跳过垃圾箱,只需在语句末尾添加--force

          如果您想删除不同的订单状态,可以使用以下选项:

          • wc-完成
          • wc-待处理
          • wc 处理
          • wc-on-hold
          • wc-取消
          • wc-退款
          • wc 失败

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-12-31
            • 1970-01-01
            • 2018-08-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-09
            相关资源
            最近更新 更多