Изменить статус заказа WooCommerce по умолчанию на обработку чеков и BAC-платежей - PullRequest
1 голос
/ 12 апреля 2019

В WooCommerce мне нужно, чтобы все мои заказы немедленно переходили в статус "обработки" , чтобы электронная почта обработки заказа отправлялась непосредственно при обработке заказа.

По умолчанию такое поведение существует для заказов Paypal и COD, , но не для BACS и чека , где статус по умолчанию on-hold.

Я попробовал несколько таких фрагментов, как этот:

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_process_order' );

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

    $order = wc_get_order( $order_id );
    $order->update_status( 'processing' );
}

Но это не работает, заказ по-прежнему отображается в состоянии «в ожидании», и уведомление об обработке по электронной почте не отправляется.,Теперь я только что нашел этот фрагмент:

add_filter( 'woocommerce_bacs_process_payment_order_status', function( $status = 'on_hold', $order = null ) {
    return 'processing';
}, 10, 2 );

И это работает, но только для "BACS".Как я могу настроить его так, чтобы он также работал для заказов "Чек"?

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Хук фильтра woocommerce_cheque_process_payment_order_status еще не реализован в Woocommerce 3.5.7… если вы посмотрите на файл, расположенный в вашем плагине woocommerce, в:
includes> gateways> cheque>class-wc-gateway-cheque.php, крючок отсутствует (строка 122) :

$order->update_status( 'on-hold', _x( 'Awaiting check payment', 'Check payment method', 'woocommerce' ) );

Но на Github WC версия 3,5,7 для class-wc-gateway-cheque.php файл , крюк существует (строка 122) :

$order->update_status( apply_filters( 'woocommerce_cheque_process_payment_order_status', 'on-hold', $order ), _x( 'Awaiting check payment', 'Check payment method', 'woocommerce' ) );

Крюк планируется быть доступнымследующий выпуск WooCommerce 3.6, см. изменение файла на Woocommerce Github .Он помечен 3.6.0-rc.2 и 3.6.0-beta.1

Так что можно будет изменить статус заказа по умолчанию на «обработка» для методов оплаты «bacs» и «check», используя следующие параметры:

add_filter( 'woocommerce_bacs_process_payment_order_status','filter_process_payment_order_status_callback', 10, 2 );
add_filter( 'woocommerce_cheque_process_payment_order_status','filter_process_payment_order_status_callback', 10, 2 );
function filter_process_payment_order_status_callback( $status, $order ) {
    return 'processing';
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).

0 голосов
/ 12 апреля 2019

Ты почти у цели. Прямо сейчас вы добавляете фильтр для хука BACS. Есть похожий хук для Cheque способа оплаты.

Просто добавьте следующий код:

add_filter( 
  'woocommerce_cheque_process_payment_order_status',
  function( $status = 'on_hold', $order = null ) {
    return 'processing';
  }, 10, 2
);

Он делает то же самое, но только для Cheque заказов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...