SEND NEW COMPLETED ORDER EMAIL TO FACTORY WOOCOMMERCE IN WORDPRESS
Let’s get started.
Copy the code below to your current theme functions.php
or I strongly suggest copy and paste this into a new file and include it into a functions.php
file instead, that save a lot of space in your functions.php
file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly if ( ! class_exists( 'WC_Factory_Completed_Order_Email' ) ) : /** * Factory Completed Order Email * * An email sent to the factory when a new order is completed. * * @class WC_Factory_Completed_Order_Email * @version 2.0.0 * @package WooCommerce/Classes/Emails * @author WooThemes * @extends WC_Email */ class WC_Factory_Completed_Order_Email extends WC_Email { /** * Constructor */ public function __construct() { // set ID, this simply needs to be a unique name $this->id = 'wc_factory_completed_order'; // this is the title in WooCommerce Email settings $this->title = 'Factory Completed Order'; // this is the description in WooCommerce email settings $this->description = 'Factory Completed Order Notification emails are sent to factory once the new order is completed.'; // these are the default heading and subject lines that can be overridden using the settings $this->heading = 'Factory Completed Order'; $this->subject = 'Factory Completed Order'; // these define the locations of the templates that this email should use, we'll just use the new order template since this email is similar $this->template_html = 'emails/admin-new-order.php'; $this->template_plain = 'emails/plain/admin-new-order.php'; // Trigger on new paid orders add_action( 'woocommerce_order_status_completed', array( $this, 'trigger' ) ); add_action( 'woocommerce_order_status_processing_to_completed', array( $this, 'trigger' ) ); // actually I'm not sure for this but lets include this for sure. add_action( 'woocommerce_order_status_processing_to_completed_notification', array( $this, 'trigger' ) ); // Call parent constructor to load any other defaults not explicity defined here parent::__construct(); // this sets the recipient to the settings defined below in init_form_fields() $this->recipient = $this->get_option( 'recipient' ); // if none was entered, just use the WP admin email as a fallback if ( ! $this->recipient ) $this->recipient = get_option( 'admin_email' ); } /** * trigger function. * * @access public * @return void */ function trigger( $order_id ) { if ( $order_id ) { $this->object = new WC_Order( $order_id ); $this->find[] = '{order_date}'; $this->replace[] = date_i18n( wc_date_format(), strtotime( $this->object->order_date ) ); $this->find[] = '{order_number}'; $this->replace[] = $this->object->get_order_number(); } if ( ! $this->is_enabled() || ! $this->get_recipient() ) return; $this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() ); } /** * get_content_html function. * * @access public * @return string */ function get_content_html() { ob_start(); woocommerce_get_template( $this->template_html, array( 'order' => $this->object, 'email_heading' => $this->get_heading() ) ); return ob_get_clean(); } /** * get_content_plain function. * * @access public * @return string */ function get_content_plain() { ob_start(); woocommerce_get_template( $this->template_plain, array( 'order' => $this->object, 'email_heading' => $this->get_heading() ) ); return ob_get_clean(); } /** * Initialise Settings Form Fields * * @access public * @return void */ function init_form_fields() { $this->form_fields = array( 'enabled' => array( 'title' => 'Enable/Disable', 'type' => 'checkbox', 'label' => 'Enable this email notification', 'default' => 'yes' ), 'recipient' => array( 'title' => 'Recipient(s)', 'type' => 'text', 'description' => sprintf( 'Enter recipients (comma separated) for this email. Defaults to <code>%s</code>.', esc_attr( get_option( 'admin_email' ) ) ), 'placeholder' => '', 'default' => '' ), 'subject' => array( 'title' => 'Subject', 'type' => 'text', 'description' => sprintf( 'This controls the email subject line. Leave blank to use the default subject: <code>%s</code>.', $this->subject ), 'placeholder' => '', 'default' => '' ), 'heading' => array( 'title' => 'Email Heading', 'type' => 'text', 'description' => sprintf( __( 'This controls the main heading contained within the email notification. Leave blank to use the default heading: <code>%s</code>.' ), $this->heading ), 'placeholder' => '', 'default' => '' ), 'email_type' => array( 'title' => 'Email type', 'type' => 'select', 'description' => 'Choose which format of email to send.', 'default' => 'html', 'class' => 'email_type', 'options' => array( 'plain' => __( 'Plain text', 'woocommerce' ), 'html' => __( 'HTML', 'woocommerce' ), 'multipart' => __( 'Multipart', 'woocommerce' ), ) ) ); } } endif; return new WC_Factory_Completed_Order_Email(); |
That’s it, Happy Coding ^_^