• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Смена статуса заказа - автоматически

DiZeR

Опытный
Местный
Приветствую,
необходимо переводить все новые статусы заказов «В ожидании оплаты» в статус «Обработка» автоматически.

Woo v. 2.3.13

В сети находил похожий под задачи код:

Код:
/**
 * Auto Complete all WooCommerce orders.
 */
 add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
 function custom_woocommerce_auto_complete_order( $order_id ) {
 if ( ! $order_id ) {
 return;
 }
$order = wc_get_order( $order_id );
 $order->update_status( 'completed' );
 }

и

Код:
function wc_mark_all_orders_as_complete($order_status, $order_id) {
 $order = new WC_Order($order_id);
 if ($order_status == 'processing' && ( $order->status == 'on-hold' || $order->status == 'pending' || $order->status == 'failed' )) {
 return 'completed';
 }
return $order_status;
 }
add_filter('woocommerce_payment_complete_order_status', 'wc_mark_all_orders_as_complete', 10, 2);

Пока не получилось его изменить. Как я понял работают он уже с статусом «оплачено» завершая заказ. Сталкивался кто с такой задачей?
 
Последнее редактирование:

DiZeR

Опытный
Местный
Вообщем попробовал вот такой вариант:

Код:
function onwp_order_status( $order_status, $order_id ) {
 
$order = new WC_Order( $order_id );
if ( 'processing' == $order_status ) {
 
return 'pending';
 
}
return $order_status;
 
}
 
add_filter( 'woocommerce_payment_complete_order_status', 'onwp_order_status', 10, 2 );

Код:
add_action('woocommerce_order_status_changed', 'status_changed_processsing');
function status_changed_processsing($order_id, $checkout = null) {
 
global $woocommerce;
 
$order = new WC_Order($order_id);
 
if ($order->status == 'processing') {
 
// вариант 1
 
$order->status = 'pending';
 
// вариант 2
 
// $order->update_status('pending');
 
}
 
}

Но заказы всеравно остаются со статусом «Ожидание оплаты».

Решил задачу по другому, но цель менят статус - актуально.
 
Последнее редактирование:
Сверху Снизу