Чтобы обновить статус заказа массива идентификаторов заказов, вы можете использовать множество способов (но всегда делайте резервную копию базы данных раньше или, по крайней мере, таблицу wp_posts
) .
Примечание: Порядок Woocommerce post_status
всегда начинается с wc-
.
1) Лучший способ - использовать легкий вес,очень эффективный и уникальный SQL-запрос с WPDB
классом WordPress, таким образом:
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) Другой способ (более тяжелый) заключается вОбновление статуса массива идентификаторов заказа заключается в использовании функции WordPress wp_update_post()
в цикле foreach следующим образом:
$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_Product
метод update_status()
, так как он будет очень тяжелым (и он будет отправлять клиенту уведомление о конкретных статусах заказа)