Как автоматически изменить статус обработки woocommerce на завершенный - PullRequest
0 голосов
/ 23 октября 2019

Как изменить woocommerce статус заказа с обработки на завершено?

Я нашел фрагмент, но он только изменяет статус, если вы переходите на страницу благодарности, но если мой клиент решает просто закрыть страницу paypal и не переходить на страницу благодарности?

Затем он все еще обрабатывает, уже проверил. Мне нужно автоматически определить статус обработки и изменить его на обработку.

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

В вашем случае у вас есть два варианта: первый может не работать, так как он связан с предыдущими версиями woocommerce, но второй должен работать

добавить код в ваши функции. Php

add_filter( 'woocommerce_payment_complete_order_status', 'update_order_status_woo', 10, 2 );
function update_order_status_woo( $order_status, $order_id ) {

    $order = new WC_Order( $order_id );
    if ( $order_status == 'processing' && ( 'on-hold' == $order->status || 'pending' == $order->status || 'failed' == $order->status ) ) {
        return 'completed';
    }
    return $order_status;
}

add_action('woocommerce_order_status_changed', 'auto_update_processing_to_complete');

function auto_update_processing_to_complete($order_id)
{
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    if ($order->data['status'] == 'processing') {
        $order->update_status( 'completed' );
    }   
}
0 голосов
/ 23 октября 2019

Это будет проверять, когда заказ меняет статус. Если статус изменится на обработку, он установит статус завершен. Обратите внимание, что он проходит обработку, поэтому пользователь, вероятно, получит два электронных письма подряд. Вы можете отключить одно из электронных писем в панели настроек WC.

function wc_status_change($order_id,$old_status,$new_status) {
   $order = new WC_Order( $order_id );
   if($order->status == 'processing'){
       $order->update_status('completed');
   }
}
...