Я использую этот небольшой кусочек кода в WooCommerce из этого ответа для автозаполнения платных обработка заказов на основе платежных шлюзов:
/**
* AUTO COMPLETE PAID ORDERS IN WOOCOMMERCE
*/
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 );
function custom_woocommerce_auto_complete_paid_order( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
// No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods.
if ( ( get_post_meta($order->id, '_payment_method', true) == 'bacs' ) || ( get_post_meta($order->id, '_payment_method', true) == 'cod' ) || ( get_post_meta($order->id, '_payment_method', true) == 'cheque' ) ) {
return;
}
// "completed" updated status for paid Orders with all others payment methods
else {
$order->update_status( 'completed' );
}
}
Это работает в основном идеально
В основном используется специальный платежный шлюз по SMS, API которого соединен с методом оплаты «cod» и который может обрабатывать платеж после «woocommerce_thankyou» на внешнем интерфейсе. В этом случае заказы со статусом В ОЖИДАНИИ впоследствии переходят в статус ОБРАБОТКА. Чтобы автоматизировать поведение автозаполнения в этих случаях, я использую этот другой фрагмент кода из этого ответа и это работает:
function auto_update_orders_status_from_processing_to_completed(){
// Get all current "processing" customer orders
$processing_orders = wc_get_orders( $args = array(
'numberposts' => -1,
'post_status' => 'wc-processing',
) );
if(!empty($processing_orders))
foreach($processing_orders as $order)
$order->update_status( 'completed' );
}
add_action( 'init', 'auto_update_orders_status_from_processing_to_completed' );
ПРОБЛЕМА. Я получаю повторяющиеся электронные письма о новых выполненных заказах.
Как я могу избежать повторяющихся случаев получения уведомлений по электронной почте?
Спасибо