Sometimes you’re in the need to add some custom dynamic content to your newsletters. You may use it for coupon codes, custom status, or even the weather in a specific region. To achieve that you can start with this snippet
add_action( 'mailster_add_tag', function() {
mailster_add_tag('mytag', function( $option, $fallback, $campaignID = null, $subscriberID = null ) {
return 'My Tag: Option: ' . $option . '; Fallback: ' . $fallback;
});
});
If you add this to your themes function.php you can now use {mytag}
in your newsletters.
If you like to add options to the tag like {mytag:my_option}
you find this value in the $option
variable
To define a fallback value in your tag use {mytag|my_fallback}
or {mytag:my_option|my_fallback}
to add ‘my_fallback’ in the $fallback
variable.
Once the tag is added you can select it from the drop-down menu in the editor:
Using different content for each subscriber
Sometimes you like to display unique content for each subscriber which you don’t like to store in custom fields or create on demand. Here’s an example of how to use coupon codes in a dynamic tag.
Create a source
First, you have to define the source which your data is coming from. In our case, it’s a function that generates the code but it can be a database table or a simple array.
Let’s create a get_subscriber_coupon
the method which needs the subscriber ID to get the same unique code for each individual subscriber.
function get_subscribers_coupon( $subscriber_id ) {
$seed = AUTH_SALT;
$length = 10;
$code = substr( strtoupper( base_convert( md5( $seed . $subscriber_id ), 16, 36 ) ), 0, $length );
return $code;
}
This method creates a 10-character long, uppercase string based on the subscriber ID. It uses the AUTH_SALT
constant as a seed so you don’t get the same code on every website.
You should create your own custom method if you like to make sure nobody can just guess your coupon code.
The dynamic tag
Now we need a dynamic tag that we can use in our campaign to display the generated code. We create a new function for a {coupon}
tag.
add_action( 'mailster_add_tag', function() {
mailster_add_tag( 'coupon', function( $option, $fallback, $campaignID = null, $subscriberID = null ) {
// make sure the subscriber ID is set
if ( ! is_null( $subscriberID ) ) {
return get_subscribers_coupon( $subscriberID );
}
// return the fallback "NOCOUPONCODE4U"
return $fallback;
} );
});
This method will first check if a subscriber is set and will return the code for this subscriber. If not set it will return the $fallback
which is an empty string by default or the content you define in your code.
You can now use the following code in your campaigns:
{coupon}
=> no fallback will be displayed
{coupon|NOCOUPONCODE4U}
=> “NOCOUPONCODE4U” will be displayed if no user is defined
You can also hardcode a fallback into your function if you prefer this.
This is a very basic example of getting custom content for your subscribers.