添加自定义订单状态并在Woocommerce中发送有关状态更改的电子邮件

问题描述 投票:1回答:1

我想在我的woocommerce网站中添加自定义订单状态。每当状态更改为该自定义状态时,我都想发送邮件。我已经尝试过[Send an email notification when custom order status changes in WooCommerce[https://github.com/sarun007/custom-email-plugin/tree/master,但是没有用,我正在使用woocommerce 3.2.6版本

php wordpress woocommerce status orders
1个回答
1
投票

要使其用于新的自定义订单状态(此处为“等待交货”),您需要:

  • 首先注册自定义新订单状态,>>
  • 以在管理员订单列表上的批量编辑下拉列表中显示它[[(可选)
  • 以顺序显示页面状态下拉菜单中显示
  • 在订单获得此自定义状态时发送自定义的电子邮件通知。
  • 代码:

// register a custom post status 'awaiting-delivery' for Orders add_action( 'init', 'register_custom_post_status', 20 ); function register_custom_post_status() { register_post_status( 'wc-awaiting-delivery', array( 'label' => _x( 'Awaiting delivery', 'Order status', 'woocommerce' ), 'public' => true, 'exclude_from_search' => false, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop( 'Awaiting delivery <span class="count">(%s)</span>', 'Awaiting delivery <span class="count">(%s)</span>', 'woocommerce' ) ) ); } // Adding custom status 'awaiting-delivery' to order edit pages dropdown add_filter( 'wc_order_statuses', 'custom_wc_order_statuses', 20, 1 ); function custom_wc_order_statuses( $order_statuses ) { $order_statuses['wc-awaiting-delivery'] = _x( 'Awaiting delivery', 'Order status', 'woocommerce' ); return $order_statuses; } // Adding custom status 'awaiting-delivery' to admin order list bulk dropdown add_filter( 'bulk_actions-edit-shop_order', 'custom_dropdown_bulk_actions_shop_order', 20, 1 ); function custom_dropdown_bulk_actions_shop_order( $actions ) { $actions['mark_awaiting-delivery'] = __( 'Mark Awaiting delivery', 'woocommerce' ); return $actions; } // Adding action for 'awaiting-delivery' add_filter( 'woocommerce_email_actions', 'custom_email_actions', 20, 1 ); function custom_email_actions( $action ) { $actions[] = 'woocommerce_order_status_wc-awaiting-delivery'; return $actions; } add_action( 'woocommerce_order_status_wc-awaiting-delivery', array( WC(), 'send_transactional_email' ), 10, 1 ); // Sending an email notification when order get 'awaiting-delivery' status add_action('woocommerce_order_status_awaiting-delivery', 'backorder_status_custom_notification', 20, 2); function backorder_status_custom_notification( $order_id, $order ) { // HERE below your settings $heading = __('Your Awaiting delivery order','woocommerce'); $subject = '[{site_title}] Awaiting delivery order ({order_number}) - {order_date}'; // Getting all WC_emails objects $mailer = WC()->mailer()->get_emails(); // Customizing Heading and subject In the WC_email processing Order object $mailer['WC_Email_Customer_Processing_Order']->heading = $heading; $mailer['WC_Email_Customer_Processing_Order']->subject = $subject; // Sending the customized email $mailer['WC_Email_Customer_Processing_Order']->trigger( $order_id ); }

代码进入您的活动子主题(或活动主题)的function.php文件。

经过测试并可以正常运行[[(应该在2.5以上的Woocommerce版本上可以使用)>

在其他功能中,如果您使用WC_Order方法update_status()将订单更改为“等待交货”状态,如:

$order->update_status();

<< [相关电子邮件通知也将被发送


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.