Adding Merge Tags to existing Triggers
Sometimes it's needed to add your own Merge Tag to already defined Trigger. In example you can add a custom meta Merge Tag to default Post Published Trigger.
To do this simply hook into the action and add your Merge Tag:
// Hook into an action when Merge Tags are attached to Trigger.
add_action( 'notification/trigger/merge_tags', function( $trigger ) {
​
// Check if registered Trigger is the one you need.
if ( 'post/post/updated' !== $trigger->get_slug() ) {
return;
}
​
// Pay attention to the Tag type you are defining.
// If you want to output an HTML, use HtmlTag instead.
$trigger->add_merge_tag( new BracketSpace\Notification\Defaults\MergeTag\StringTag( [
'slug' => 'new_merge_tag',
'name' => __( 'New Merge Tag', 'textdomain' ),
'resolver' => function( $trigger ) {
return get_post_meta( $trigger->{ $trigger->get_post_type() }->ID, '_my_meta_key', true );
},
] ) );
​
} );

You can target all the Post Type Triggers like this:
add_action( 'notification/trigger/merge_tags', function( $trigger ) {
​
if ( ! preg_match( '/post\/(.*)\/(updated|trashed|published|drafted|added|pending|scheduled)/', $trigger->get_slug() )
return;
}
​
// Add your Tag.
​
} );

The Notification plugin also supports global Merge Tags which are added to all Triggers. You can use this nifty function to create one:
use BracketSpace\Notification\Defaults\MergeTag\StringTag;
use BracketSpace\Notification\Register;
​
Register::global_merge_tag( new StringTag( [
'slug' => 'option_value',
'name' => __( 'Site option', 'textdomain' ),
'resolver' => function( $trigger ) {
return get_option( 'your_option_name', 'Default' );
},
] ) );
Before using any property of the Trigger make sure it's avaible. Global Merge Tags are intended to be loosly connected with any Trigger.
Copy link
On this page
Targeting all Post Type Triggers
Global Merge Tags