2016-04-13 2 views
3

В WooCommerce любой заказ, размещенный с BACS (прямой банковский перевод), установлен на "on-hold".Изменение статуса заказа WooCommerce Обработка BACS

Как можно было бы автоматически изменить это на обработку?

Я wan't, чтобы работать внутри functions.php

У меня есть следующий код, но это не работает:

add_filter('woocommerce_payment_complete_order_status', 'rfvc_update_order_status', 10, 2); 

function rfvc_update_order_status($order_status, $order_id) { 
    $order = new WC_Order($order_id); 
    if ('on-hold' == $order_status && 'on-hold' == $order->status) { 
     return 'processing'; 
    } 
    return $order_status; 
} 

Любая помощь будет здорово!

+1

Я решил пойти на второй подход, как это кажется первый фильтр не срабатывает с оплатой BACS. –

ответ

5

(обновление)

Кажется, что add_filter('woocommerce_payment_complete_order_status', 'my_custom_function', 10, 2); не срабатывает с методом оплаты BACS.

на основе this thread, add_action('woocommerce_thankyou', 'my_custom_function', 10, 1); делает работу:

add_action('woocommerce_thankyou', 'bacs_order_payment_processing_order_status', 10, 1); 

function bacs_order_payment_processing_order_status($order_id) { 

    if (! $order_id) { 

    return; 

    } 

    global $woocommerce; 
    $order = new WC_Order($order_id); 

    if ((get_post_meta($order->id, '_payment_method', true) == 'bacs') && ('on-hold' == $order->status || 'pending' == $order->status)) { 

    $order->update_status('processing'); 

    } else { 

    return; 

    } 

} 
+0

Это прекрасно! :) Спасибо! –

1

Попробуйте изменить код следующим образом:

function rfvc_update_order_status($order_status, $order_id) { 
    $order = new WC_Order($order_id); 
    if ('on-hold' == $order_status && 'on-hold' == $order->status) { 
     $order->update_status('processing', 'order_note'); 
    } 
    return $order_status; 
} 

Основное изменение заключается в следующем:

$order->update_status('processing', 'order_note'); 

Вы можете добавить примечание заказ также, если вы предпочитаете.

+0

Ну что ж, что делать, но я подключаюсь к 'woocommerce_payment_complete_order_status', это даже срабатывает при использовании BACS? Поскольку этот способ оплаты просто отправляет людям счет-фактуру. –

+0

Можете ли вы попробовать? Обычно это должно быть. –

+0

Я попробовал, но похоже, что это не работает. –

Смежные вопросы