【问题标题】:Woocommerce bulk change order statusWoocommerce 批量更改订单状态
【发布时间】:2018-01-01 15:00:17
【问题描述】:

我目前在使用 WooCommerce 网站时遇到了一些问题。有数以千计的旧订单停留在“处理中”状态。 这些订单已收到付款,产品已发货。

我想将这些订单标记为已完成,而不发送已完成的订单电子邮件。我想使用以下 SQL 查询来实现这一点。

update wp_posts set post_status = 'wc-completed' where post_type = 'shop_order' and post_status ='wc-processing' ;

我还需要更改其他表吗?或者这样可以吗?

谢谢

编辑: 上面的代码非常适合我。

【问题讨论】:

标签: mysql wordpress woocommerce


【解决方案1】:

如果您只是更改订单状态,则不需要更新任何其他表格。请注意,您也可以在 WordPress 中实现此目的:

$args = array(
    'post_type'         => 'shop_order',
    'posts_per_page'    => -1,
    'post_status'       => 'wc-processing',
);

$orderList = get_posts($args);

foreach ($orderList as $orderPost) {
    $order = new WC_Order($orderPost->ID);
    $order->update_status('completed');
}

...虽然在这种情况下直接 SQL 查询几乎肯定会更快。

此外,如果您想在订单付款后自动将其转换为completed,您可以添加以下过滤器:

function myWooAutoCompleteOrder($orderID) {

    //  Only continue if we have $orderID

    if (!$orderID) {
        return;
    }

    //  Get order

    $order = wc_get_order($orderID);

    //  Update order to completed status

    if ($order) {
        $order->update_status('completed');
    }
}

add_filter('woocommerce_thankyou', 'myWooAutoCompleteOrder');

【讨论】:

  • 在 WordPress 中执行此操作是否意味着发送订单完整的电子邮件?谢谢
  • @user3215838 如果您选中了已完成的电子邮件选项,那么是的;第一段代码将向客户发送一封电子邮件。您总是可以暂时关闭它,但就像我说的:如果您要为几千个旧订单执行此操作,那么通过 SQL 执行此操作可能最有意义,并且您的 SQL 行应该没问题。
猜你喜欢
  • 2017-05-24
  • 2019-04-24
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 2022-09-30
  • 2018-08-30
  • 2022-10-05
相关资源
最近更新 更多