use*_*838 5 mysql wordpress woocommerce
我目前在使用 WooCommerce 网站时遇到一些问题。有数千个旧订单停留在“处理中”状态。这些订单已收到付款,产品已发货。
我想将这些订单标记为完成,而不发送已完成的订单电子邮件。我想使用以下 SQL 查询来实现此目的。
update wp_posts set post_status = 'wc-completed' where post_type = 'shop_order' and post_status ='wc-processing' ;
Run Code Online (Sandbox Code Playgroud)
我还需要更改其他表吗?或者这可行吗?
谢谢
编辑:上面的代码对我来说非常有效。
如果您只是更改订单状态,则不需要更新任何其他表。请注意,您也可以在 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');
}
Run Code Online (Sandbox Code Playgroud)
...尽管在这种情况下直接 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');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4057 次 |
| 最近记录: |