LogoLogo
WordPress.orgExtensionsSupport
Version 9
Version 9
  • Notification – Custom Notifications and Alerts for WordPress
  • Updating to v9
  • Known issues
  • πŸ€Έβ€β™€οΈ User guide
    • Update broke my site
    • How Notification plugin works
    • Who can use this plugin
    • How to create Notifications
    • Troubleshooting
    • Advanced
      • How to escape { character
      • Background processing
      • How to setup different FROM address for different Notifications
      • Custom Post Type support
      • Disable upselling
      • How to send HTML Emails
  • πŸ”§Developer
    • General
      • Plugin loading chain
      • Runtime
      • Extension possibilities
      • Creating an extension
      • Customizations
      • Bundling Notification plugin
      • White label mode
    • Notifications
      • Suppressing the Notification
      • JSON synchronization
      • Programmatic Notifications
    • Triggers
      • List of all default Triggers
      • Custom Trigger
      • Enable support for non-public Custom Post Type
      • Adding Merge Tags to existing Triggers
    • Carriers
      • Custom Carrier
      • Adding custom fields to Carrier form
      • Suppressing the Carrier
    • Recipients
      • Custom Recipient
    • Snippets
      • General
        • Automatic Trigger testing
        • Allow other roles to edit Notifications
        • Programmatic Notification with manual Trigger
        • Background Processing filter
      • Triggers
        • Post
        • User
      • Integations
        • WP All Import
        • MemberPress
  • 🧩Extensions
    • Installation
    • Planned extensions
    • 3rd Party Extensions
    • Custom Fields
      • v2.2
      • v1.4
      • v1.3
    • Conditionals
    • Email Attachments
    • Push
    • Scheduled Triggers
    • Slack
    • Twilio
    • Webhooks
Powered by GitBook
On this page
  • Basic example
  • All arguments

Was this helpful?

  1. Developer
  2. Notifications

Programmatic Notifications

PreviousJSON synchronizationNextTriggers

Last updated 6 months ago

Was this helpful?

The notifications don't necessarily have to be saved in WordPress database nor loaded from JSON files. A good example is 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.

use BracketSpace\Notification\Register;

Register::notificationFromArray(
    [
        '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.
    ]
);

You can also register an existing Notification object

use BracketSpace\Notification\Register;
use BracketSpace\Notification\Core\Notification;

// @var Notification $notification
Register::notification($notificaiton);

All arguments

All arguments available:

use BracketSpace\Notification\Register;

Register::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.
]);

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

πŸ”§
dynamic trigger testing
checking the source code