Как в woocommerce автоматически завершить заказ если он в статусе «processing»?
Здравствуйте, я использую плагины woocommerce и плагин кредитов myCRED для оплаты продуктов на сайте. Но у меня возникла проблема. в результате оплаты через myCred статус заказа(order) в woocommerce становится «processing», и приходится в ручную менять на статус «completed» — что бы платеж завершился. Скажите можно ли как то автоматически менять статус у order на «completed»?
Следующий код будет автоматически переводить все заказы у которых статус «processing» в статус «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);
Еще пример, который завершит ордер, когда произойдет переход на страницу «thankyou»(то есть после оплаты)
/** * 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' ); }
Добрый день! А куда вставлять тот и другой код? на какой странице?

В файл functions.php который расположен в папке с вашей темой(которую вы используете на сайте).
Получается если надо что бы после заказа статус оставался в процессе, код должен быть таким?
function wc_mark_all_orders_as_processing($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 ‘processing’;
}
return $order_status;
}
add_filter(‘woocommerce_payment_complete_order_status’, ‘wc_mark_all_orders_as_processing’, 10, 2);

Можно и так, но он по умолчанию в процессе
Разобрался, спасибо
А как автоматически менять статус:
«В ожидании оплаты» на «В обработке»?
Спасибо! Код работает, проверил. Убрался головняк с ненужным переводом в оплаченные в ручную.
А как сделать то же самое но только чтобы переводился в completed через 48ч например?
И еще такой вопрос, как отменять неоплаченные заказы (через час)?
К сожалению ни один из вариантов не сработал:(