Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 批量更改订单信息作为特定订单ID的订单状态_Php_Sql_Wordpress_Woocommerce_Orders - Fatal编程技术网

Php 批量更改订单信息作为特定订单ID的订单状态

Php 批量更改订单信息作为特定订单ID的订单状态,php,sql,wordpress,woocommerce,orders,Php,Sql,Wordpress,Woocommerce,Orders,我有一个订单ID(~400)列表,这些ID当前未处于正确的订单状态,我需要更改,我还想更新它们的付款方式 最有效和最好的方法是什么 到目前为止,我的想法是拥有一个订单ID数组,运行它们,然后在每个订单上$Order->update_status('custom status')。但是,我不确定运行此操作以确保服务器不会超时并可以成批执行等操作的最佳方法。要更新订单ID数组的订单状态,可以使用多种方法(但始终在发布之前进行数据库备份,或至少在wp\u发布表之前进行数据库备份) 注意:WOO商业订单

我有一个订单ID(~400)列表,这些ID当前未处于正确的订单状态,我需要更改,我还想更新它们的付款方式

最有效和最好的方法是什么


到目前为止,我的想法是拥有一个订单ID数组,运行它们,然后在每个订单上
$Order->update_status('custom status')
。但是,我不确定运行此操作以确保服务器不会超时并可以成批执行等操作的最佳方法。

要更新订单ID数组的订单状态,可以使用多种方法(但始终在发布之前进行数据库备份,或至少在
wp\u发布
表之前进行数据库备份)

注意:WOO商业订单
post\u状态
始终从
wc-
开始

1)最好的方法是在
WPDB
WordPress类中使用一个轻量级、非常高效且唯一的SQL查询,方法如下:

global $wpdb;

$new_status = 'wc-custom-status';
$product_ids = array(37, 53, 57, 63, 80); // The array of product Ids
$product_ids = implode(',', $product_ids);

$wpdb->query( "
    UPDATE {$wpdb->prefix}posts
    SET post_status = '$replacement_user_id'
    WHERE ID IN ($product_ids)
    AND post_type = 'shop_order'
" );

2)另一种方法是更新订单ID数组的状态,即在foreach循环中使用WordPress
wp\u update\u post()
函数,方法如下:

$new_status = 'wc-custom-status';
$product_ids = array(37, 53, 57, 63, 80); // The array of product Ids
$product_ids = implode(',', $product_ids);

foreach ( $orders_ids as $order_id ) {
    wp_update_post( array('ID' => $order_id, 'post_status' => $new_status) );
}
这两个代码都经过测试并正常工作

您可以将代码嵌入函数中,并从钩子(甚至使用短代码)触发它


我不建议您使用
WC\u产品
方法
update\u status()
,因为它会非常繁重(并且会针对特定订单状态向客户发送通知)

要更新订单ID数组的订单状态,您可以使用多种方法(但一定要在发布之前进行数据库备份,或者至少在
wp\u posts
表中进行备份)

注意:WOO商业订单
post\u状态
始终从
wc-
开始

1)最好的方法是在
WPDB
WordPress类中使用一个轻量级、非常高效且唯一的SQL查询,方法如下:

global $wpdb;

$new_status = 'wc-custom-status';
$product_ids = array(37, 53, 57, 63, 80); // The array of product Ids
$product_ids = implode(',', $product_ids);

$wpdb->query( "
    UPDATE {$wpdb->prefix}posts
    SET post_status = '$replacement_user_id'
    WHERE ID IN ($product_ids)
    AND post_type = 'shop_order'
" );

2)另一种方法是更新订单ID数组的状态,即在foreach循环中使用WordPress
wp\u update\u post()
函数,方法如下:

$new_status = 'wc-custom-status';
$product_ids = array(37, 53, 57, 63, 80); // The array of product Ids
$product_ids = implode(',', $product_ids);

foreach ( $orders_ids as $order_id ) {
    wp_update_post( array('ID' => $order_id, 'post_status' => $new_status) );
}
这两个代码都经过测试并正常工作

您可以将代码嵌入函数中,并从钩子(甚至使用短代码)触发它

我不建议您使用
WC\u产品
方法
update\u status()
,因为它会非常繁重(并且会针对特定订单状态向客户发送通知)