WooCommerce уведомление администратору о новом заказе в статусе «В ожидании оплаты»

По умолчанию WooCommerce не отсылает е-мейл сообщения администратору, когда статус заказа находится «В ожидании оплаты» или «Pending payment».

Обычно вы можете изменить статус заказа на «Выполнен» или «Completed» с помощью готового снипета из документации WooCommerce и получать стандартное оповещение на е-мейл от выполненного заказа:

Сообщение WooCommerce о Новом заказе

Сообщение WooCommerce о Новом заказе

Снипет из документации WooCommerce для изменения статуса заказа с «В ожидании оплаты» на «Выполнен»:

/* 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’ );
}

Но если у вас более сложная ситуация, например, проблема со шлюзом оплаты, или кроме Вукоммерса и шлюза оплаты у вас есть еще один плагин, например, WooCommerce Subscriptions, вам может быть нужно посылать е-мейл при статусе заказа «В ожидании оплаты».

Если это так, то предыдущий снипет может не работать. Нужно использовать другую функцию.

Попробуйте этот снипет:

// New order notification only for «Pending» Order status
add_action( ‘woocommerce_checkout_order_processed’, ‘pending_new_order_notification’, 20, 1 );
function pending_new_order_notification( $order_id ) {

// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// Only for «pending» order status
if( ! $order->has_status( ‘pending’ ) ) return;

// Send «New Email» notification (to admin)
WC()->mailer()->get_emails()[‘WC_Email_New_Order’]->trigger( $order_id );
}

Если вы хотите посылать отредактированную версию е-мейла, попробуйте этот снипет:

// New order notification only for «Pending» Order status
add_action( ‘woocommerce_checkout_order_processed’, ‘pending_new_order_notification’, 20, 1 );
function pending_new_order_notification( $order_id ) {
// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// Only for «pending» order status
if( ! $order->has_status( ‘pending’ ) ) return;

// Get an instance of the WC_Email_New_Order object
$wc_email = WC()->mailer()->get_emails()[‘WC_Email_New_Order’];

## — Customizing Heading, subject (and optionally add recipients) — ##
// Change Subject
$wc_email->settings[‘subject’] = __(‘{site_title} — New customer Pending order ({order_number}) — {order_date}’);
// Change Heading
$wc_email->settings[‘heading’] = __(‘New customer Pending Order’);
// $wc_email->settings[‘recipient’] .= ‘,name@email.com’; // Add email recipients (coma separated)

// Send «New Email» notification (to admin)
$wc_email->trigger( $order_id );
}

Измените тему письма в строке 15, заголовок письма в строке 17, и е-мейл в строке 18.