Programmatic Notifications

The notifications doesn't necessarly have to be saved in WordPress database nor loaded from JSON files. A good example is dynamic trigger testing where all the notifications are created on the fly.

Basic example

You can define the notification with a simple array. Below is a minimal example with all the required parameters.

if ( function_exists( 'notification' ) ) :
notification( [
	'title'    => 'My programmatic notification', // For internal reference.
	'trigger'  => 'trigger_slug', // Trigger slug (can be a Triggerable object).
	'carriers' => [ // An array with format: carrier_slug => data array
		'email' => [
			'activated'  => true, // Must be true.
			'enabled'    => true, // Must be true.
			'subject'    => 'Email from ghost notification!', 
			'body'       => 'This is nice, {user_first_name}, huh?',
			'recipients' => [
				[
					'type'      => 'administrator',
					'recipient' => '',
				],
				[
					'type'      => 'email',
					'recipient' => '{user_email}',
				],
			],
		],
	],
	'enabled'  => true, // Must be true.
] );
endif;

You can reference the Carrier fields by checking the source code. You should check the add_form_field method calls which will contain the field slug and other useful info about the type.

All arguments

All arguments available:

if ( function_exists( 'notification' ) ) :
notification( [
	'hash'     => 'my_programmatic_notification', // Unique notification hash, automatically generated.
	'title'    => 'My programmatic notification',
	'trigger'  => 'trigger_slug',
	'carriers' => [
		'email' => [
			'activated'  => true,
			'enabled'    => true,
			'subject'    => 'Email from ghost notification!', 
			'body'       => 'This is nice, {user_first_name}, huh?',
			'recipients' => [
				[
					'type'      => 'administrator',
					'recipient' => '',
				],
				[
					'type'      => 'email',
					'recipient' => '{user_email}',
				],
			],
		],
	],
	'enabled'  => true,
	'extras'   => [], // Extra data array, ie. config for add-ons.
	'version'  => time(), // Version of the notification, should be a timestamp. Default: current time.
] );
endif;

Last updated