Contents
Last Updated on: 6th July 2023, 07:12 pm
AutomateWoo Custom Trigger
I recently played around with how to add a custom trigger to AutomateWoo and after trying three outdated examples, this is the best source I could find: https://github.com/curtismchale/nexcess-automatewoo-triggers/
When customer address is updated trigger
I put together a quick working example based on the above repo.
The AutomateWoo Billing Trigger is a custom plugin that adds a new trigger when a customer updates their address. It’s a simple yet effective tool that can be utilized in various scenarios, such as triggering a welcome email when a customer changes their address or notifying the logistics team about the change.
Here’s a brief overview of the plugin’s structure:
- The
Con_Automatewoo_Triggersclass: This class is the plugin’s backbone, initializing the constants and including necessary files. It also adds the new trigger to AutomateWoo. - The
customer_updated_address_triggerfunction: This function adds the custom trigger ‘customer_updated_address’ to AutomateWoo’s triggers. - The
Customer_Updated_Address_Triggerclass: This class extends AutomateWoo’s Trigger class. It defines what data will be supplied to the workflow (in this case, ‘customer’) and registers the necessary hooks.
View the code
class-custom-trigger.php
<?php
/*
Plugin Name: AutomateWoo Billing Trigger
Description: Adds custom triggers to AutomateWoo
Version: 1.0
Author: Your Name
Author URI: Your Website
License: GPLv2 or later
*/
class Con_Automatewoo_Triggers{
private static $instance;
public static function instance(){
if ( ! self::$instance ){
self::$instance = new Con_Automatewoo_Triggers();
self::$instance->init();
}
} // instance
public function init(){
$this->constants();
$this->includes();
add_filter( 'automatewoo/triggers', array( $this, 'customer_updated_address_trigger' ), 10, 1 );
} // init
public static function customer_updated_address_trigger( $triggers ){
require_once( 'trigger-customer-updated-address.php' );
$triggers['customer_updated_address'] = 'Customer_Updated_Address_Trigger';
return $triggers;
}
public function constants(){
define( 'CON_AUTOMATEWOO_TRIGGERS_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
}
public function includes(){
}
} // Con_Automatewoo_Triggers
Con_Automatewoo_Triggers::instance();
trigger-customer-updated-address.php
<?php
if ( ! defined( 'ABSPATH' ) ){
exit;
}
class Customer_Updated_Address_Trigger extends AutomateWoo\Trigger{
public $supplied_data_items = array( 'customer' );
public function init() {
$this->title = __( 'Customer Updated Address', 'text-domain' );
$this->group = __( 'Custom Triggers', 'text-domain' );
}
public function load_fields() {}
public function register_hooks() {
add_action( 'woocommerce_customer_save_address', array( $this, 'catch_hooks' ), 10, 2 );
}
public function catch_hooks( $user_id, $load_address ) {
$customer = AutomateWoo\Customer_Factory::get_by_user_id( $user_id );
$this->maybe_run(array(
'customer' => $customer,
));
}
public function validate_workflow( $workflow ) {
$customer = $workflow->data_layer()->get_customer();
// do something...
return true;
}
} // Customer_Updated_Address_Trigger
Leave a Reply