feat: Add all WooCommerce order status events
Added missing order status events that were not showing in admin UI. New Events Added (Staff + Customer): - Order On-Hold (awaiting payment) - Order Failed (payment/processing failed) - Order Refunded (full refund processed) - Order Pending (initial order state) Changes: 1. EventRegistry.php - Added 8 new event definitions 2. DefaultTemplates.php - Added 8 new email templates 3. DefaultTemplates.php - Added subject lines for all new events Now Available in Admin: - Staff: 11 order events total - Customer: 12 events total (including new customer) All events can be toggled on/off per channel (email/push) in admin UI.
This commit is contained in:
@@ -97,6 +97,42 @@ class EventRegistry {
|
|||||||
'wc_email' => '',
|
'wc_email' => '',
|
||||||
'enabled' => true,
|
'enabled' => true,
|
||||||
],
|
],
|
||||||
|
'order_on_hold' => [
|
||||||
|
'id' => 'order_on_hold',
|
||||||
|
'label' => __('Order On-Hold', 'woonoow'),
|
||||||
|
'description' => __('When order is awaiting payment', 'woonoow'),
|
||||||
|
'category' => 'orders',
|
||||||
|
'recipient_type' => 'staff',
|
||||||
|
'wc_email' => '',
|
||||||
|
'enabled' => true,
|
||||||
|
],
|
||||||
|
'order_failed' => [
|
||||||
|
'id' => 'order_failed',
|
||||||
|
'label' => __('Order Failed', 'woonoow'),
|
||||||
|
'description' => __('When order fails', 'woonoow'),
|
||||||
|
'category' => 'orders',
|
||||||
|
'recipient_type' => 'staff',
|
||||||
|
'wc_email' => 'failed_order',
|
||||||
|
'enabled' => true,
|
||||||
|
],
|
||||||
|
'order_refunded' => [
|
||||||
|
'id' => 'order_refunded',
|
||||||
|
'label' => __('Order Refunded', 'woonoow'),
|
||||||
|
'description' => __('When order is refunded', 'woonoow'),
|
||||||
|
'category' => 'orders',
|
||||||
|
'recipient_type' => 'staff',
|
||||||
|
'wc_email' => '',
|
||||||
|
'enabled' => true,
|
||||||
|
],
|
||||||
|
'order_pending' => [
|
||||||
|
'id' => 'order_pending',
|
||||||
|
'label' => __('Order Pending', 'woonoow'),
|
||||||
|
'description' => __('When order is created (pending payment)', 'woonoow'),
|
||||||
|
'category' => 'orders',
|
||||||
|
'recipient_type' => 'staff',
|
||||||
|
'wc_email' => '',
|
||||||
|
'enabled' => true,
|
||||||
|
],
|
||||||
|
|
||||||
// CUSTOMER EVENTS
|
// CUSTOMER EVENTS
|
||||||
'order_placed_customer' => [
|
'order_placed_customer' => [
|
||||||
@@ -171,6 +207,42 @@ class EventRegistry {
|
|||||||
'wc_email' => 'customer_new_account',
|
'wc_email' => 'customer_new_account',
|
||||||
'enabled' => true,
|
'enabled' => true,
|
||||||
],
|
],
|
||||||
|
'order_on_hold_customer' => [
|
||||||
|
'id' => 'order_on_hold',
|
||||||
|
'label' => __('Order On-Hold', 'woonoow'),
|
||||||
|
'description' => __('When order is awaiting payment', 'woonoow'),
|
||||||
|
'category' => 'orders',
|
||||||
|
'recipient_type' => 'customer',
|
||||||
|
'wc_email' => 'customer_on_hold_order',
|
||||||
|
'enabled' => true,
|
||||||
|
],
|
||||||
|
'order_failed_customer' => [
|
||||||
|
'id' => 'order_failed',
|
||||||
|
'label' => __('Order Failed', 'woonoow'),
|
||||||
|
'description' => __('When order fails', 'woonoow'),
|
||||||
|
'category' => 'orders',
|
||||||
|
'recipient_type' => 'customer',
|
||||||
|
'wc_email' => 'customer_failed_order',
|
||||||
|
'enabled' => true,
|
||||||
|
],
|
||||||
|
'order_refunded_customer' => [
|
||||||
|
'id' => 'order_refunded',
|
||||||
|
'label' => __('Order Refunded', 'woonoow'),
|
||||||
|
'description' => __('When order is refunded', 'woonoow'),
|
||||||
|
'category' => 'orders',
|
||||||
|
'recipient_type' => 'customer',
|
||||||
|
'wc_email' => 'customer_refunded_order',
|
||||||
|
'enabled' => true,
|
||||||
|
],
|
||||||
|
'order_pending_customer' => [
|
||||||
|
'id' => 'order_pending',
|
||||||
|
'label' => __('Order Pending', 'woonoow'),
|
||||||
|
'description' => __('When order is created (pending payment)', 'woonoow'),
|
||||||
|
'category' => 'orders',
|
||||||
|
'recipient_type' => 'customer',
|
||||||
|
'wc_email' => '',
|
||||||
|
'enabled' => true,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -37,6 +37,10 @@ class DefaultTemplates {
|
|||||||
'order_shipped' => self::customer_order_shipped(),
|
'order_shipped' => self::customer_order_shipped(),
|
||||||
'order_completed' => self::customer_order_completed(),
|
'order_completed' => self::customer_order_completed(),
|
||||||
'order_cancelled' => self::customer_order_cancelled(),
|
'order_cancelled' => self::customer_order_cancelled(),
|
||||||
|
'order_on_hold' => self::customer_order_on_hold(),
|
||||||
|
'order_failed' => self::customer_order_failed(),
|
||||||
|
'order_refunded' => self::customer_order_refunded(),
|
||||||
|
'order_pending' => self::customer_order_pending(),
|
||||||
'payment_received' => self::customer_payment_received(),
|
'payment_received' => self::customer_payment_received(),
|
||||||
'payment_failed' => self::customer_payment_failed(),
|
'payment_failed' => self::customer_payment_failed(),
|
||||||
'new_customer' => self::customer_new_customer(),
|
'new_customer' => self::customer_new_customer(),
|
||||||
@@ -47,6 +51,10 @@ class DefaultTemplates {
|
|||||||
'order_shipped' => self::staff_order_shipped(),
|
'order_shipped' => self::staff_order_shipped(),
|
||||||
'order_completed' => self::staff_order_completed(),
|
'order_completed' => self::staff_order_completed(),
|
||||||
'order_cancelled' => self::staff_order_cancelled(),
|
'order_cancelled' => self::staff_order_cancelled(),
|
||||||
|
'order_on_hold' => self::staff_order_on_hold(),
|
||||||
|
'order_failed' => self::staff_order_failed(),
|
||||||
|
'order_refunded' => self::staff_order_refunded(),
|
||||||
|
'order_pending' => self::staff_order_pending(),
|
||||||
'payment_received' => self::staff_payment_received(),
|
'payment_received' => self::staff_payment_received(),
|
||||||
'payment_failed' => self::staff_payment_failed(),
|
'payment_failed' => self::staff_payment_failed(),
|
||||||
],
|
],
|
||||||
@@ -77,6 +85,10 @@ class DefaultTemplates {
|
|||||||
'order_shipped' => 'Your order #{order_number} is on its way',
|
'order_shipped' => 'Your order #{order_number} is on its way',
|
||||||
'order_completed' => 'Your order #{order_number} has arrived',
|
'order_completed' => 'Your order #{order_number} has arrived',
|
||||||
'order_cancelled' => 'Your order #{order_number} has been cancelled',
|
'order_cancelled' => 'Your order #{order_number} has been cancelled',
|
||||||
|
'order_on_hold' => 'Your order #{order_number} is on hold',
|
||||||
|
'order_failed' => 'Your order #{order_number} has failed',
|
||||||
|
'order_refunded' => 'Your order #{order_number} has been refunded',
|
||||||
|
'order_pending' => 'Your order #{order_number} is pending',
|
||||||
'payment_received' => 'Payment confirmed for order #{order_number}',
|
'payment_received' => 'Payment confirmed for order #{order_number}',
|
||||||
'payment_failed' => 'Payment failed for order #{order_number}',
|
'payment_failed' => 'Payment failed for order #{order_number}',
|
||||||
'new_customer' => 'Welcome to {site_name}!',
|
'new_customer' => 'Welcome to {site_name}!',
|
||||||
@@ -87,6 +99,10 @@ class DefaultTemplates {
|
|||||||
'order_shipped' => '[Order Shipped] #{order_number}',
|
'order_shipped' => '[Order Shipped] #{order_number}',
|
||||||
'order_completed' => '[Order Completed] #{order_number}',
|
'order_completed' => '[Order Completed] #{order_number}',
|
||||||
'order_cancelled' => '[Order Cancelled] #{order_number}',
|
'order_cancelled' => '[Order Cancelled] #{order_number}',
|
||||||
|
'order_on_hold' => '[Order On-Hold] #{order_number}',
|
||||||
|
'order_failed' => '[Order Failed] #{order_number}',
|
||||||
|
'order_refunded' => '[Order Refunded] #{order_number}',
|
||||||
|
'order_pending' => '[Order Pending] #{order_number}',
|
||||||
'payment_received' => '[Payment Received] #{order_number} - {order_total}',
|
'payment_received' => '[Payment Received] #{order_number} - {order_total}',
|
||||||
'payment_failed' => '[Payment Failed] #{order_number}',
|
'payment_failed' => '[Payment Failed] #{order_number}',
|
||||||
],
|
],
|
||||||
@@ -788,4 +804,227 @@ Order is reserved but will be cancelled automatically if payment is not received
|
|||||||
|
|
||||||
[/card]';
|
[/card]';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ========================================================================
|
||||||
|
// ADDITIONAL ORDER STATUS TEMPLATES
|
||||||
|
// ========================================================================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Customer: Order On-Hold
|
||||||
|
*/
|
||||||
|
private static function customer_order_on_hold() {
|
||||||
|
return '[card type="info"]
|
||||||
|
|
||||||
|
## Your order is on hold
|
||||||
|
|
||||||
|
Your order #{order_number} is awaiting payment confirmation.
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
**Order Number:** #{order_number}
|
||||||
|
**Order Total:** {order_total}
|
||||||
|
**Payment Method:** {payment_method}
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[button url="{payment_retry_url}"]Complete Payment[/button]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
Questions? Contact us: {support_email}
|
||||||
|
|
||||||
|
[/card]';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Customer: Order Failed
|
||||||
|
*/
|
||||||
|
private static function customer_order_failed() {
|
||||||
|
return '[card type="warning"]
|
||||||
|
|
||||||
|
## Order #{order_number} has failed
|
||||||
|
|
||||||
|
Unfortunately, your order could not be processed.
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
**Order Number:** #{order_number}
|
||||||
|
**Order Total:** {order_total}
|
||||||
|
**Reason:** Payment could not be processed
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[button url="{shop_url}"]Continue Shopping[/button]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
Need help? Contact: {support_email}
|
||||||
|
|
||||||
|
[/card]';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Customer: Order Refunded
|
||||||
|
*/
|
||||||
|
private static function customer_order_refunded() {
|
||||||
|
return '[card type="success"]
|
||||||
|
|
||||||
|
## Your order #{order_number} has been refunded
|
||||||
|
|
||||||
|
Your refund has been processed successfully.
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
**Order Number:** #{order_number}
|
||||||
|
**Refund Amount:** {order_total}
|
||||||
|
**Refund Date:** {order_date}
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card type="info"]
|
||||||
|
|
||||||
|
The refund will appear in your account within 5-10 business days depending on your payment provider.
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
Questions? Contact: {support_email}
|
||||||
|
|
||||||
|
[/card]';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Customer: Order Pending
|
||||||
|
*/
|
||||||
|
private static function customer_order_pending() {
|
||||||
|
return '[card type="info"]
|
||||||
|
|
||||||
|
## Thank you for your order!
|
||||||
|
|
||||||
|
Your order #{order_number} is pending and will be processed once payment is confirmed.
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
**Order Number:** #{order_number}
|
||||||
|
**Order Total:** {order_total}
|
||||||
|
**Payment Method:** {payment_method}
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
{order_items_table}
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[button url="{order_url}"]View Order[/button]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
Questions? Contact: {support_email}
|
||||||
|
|
||||||
|
[/card]';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Staff: Order On-Hold
|
||||||
|
*/
|
||||||
|
private static function staff_order_on_hold() {
|
||||||
|
return '[card type="info"]
|
||||||
|
|
||||||
|
## Order #{order_number} is on hold
|
||||||
|
|
||||||
|
Awaiting payment confirmation from {customer_name}.
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
**Order Number:** #{order_number}
|
||||||
|
**Customer:** {customer_name}
|
||||||
|
**Order Total:** {order_total}
|
||||||
|
**Payment Method:** {payment_method}
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[button url="{order_url}"]View Order[/button]';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Staff: Order Failed
|
||||||
|
*/
|
||||||
|
private static function staff_order_failed() {
|
||||||
|
return '[card type="warning"]
|
||||||
|
|
||||||
|
## Order #{order_number} has failed
|
||||||
|
|
||||||
|
Order from {customer_name} could not be processed.
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
**Order Number:** #{order_number}
|
||||||
|
**Customer:** {customer_name}
|
||||||
|
**Order Total:** {order_total}
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[button url="{order_url}"]View Details[/button]';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Staff: Order Refunded
|
||||||
|
*/
|
||||||
|
private static function staff_order_refunded() {
|
||||||
|
return '[card type="success"]
|
||||||
|
|
||||||
|
## Order #{order_number} has been refunded
|
||||||
|
|
||||||
|
Refund processed for {customer_name}.
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
**Order Number:** #{order_number}
|
||||||
|
**Customer:** {customer_name}
|
||||||
|
**Refund Amount:** {order_total}
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[button url="{order_url}"]View Order[/button]';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Staff: Order Pending
|
||||||
|
*/
|
||||||
|
private static function staff_order_pending() {
|
||||||
|
return '[card type="info"]
|
||||||
|
|
||||||
|
## New pending order #{order_number}
|
||||||
|
|
||||||
|
Order from {customer_name} is pending payment.
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[card]
|
||||||
|
|
||||||
|
**Order Number:** #{order_number}
|
||||||
|
**Customer:** {customer_name}
|
||||||
|
**Order Total:** {order_total}
|
||||||
|
|
||||||
|
[/card]
|
||||||
|
|
||||||
|
[button url="{order_url}"]View Order[/button]';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user