The wp_sms_single_dispatch_arguments
filter allows developers to modify the arguments used before dispatching an SMS to a single number. This can be useful for customizing the SMS parameters, such as the recipient’s number, message content, or any other related argument.
Parameters
$arguments
(array): The arguments for sending an SMS.to
(string): The recipient’s phone number.msg
(string): The SMS message content.
Example 1: Appending an Unsubscribe Link
This example demonstrates how to append an unsubscribe link to each SMS message before it is sent.
add_filter('wp_sms_single_dispatch_arguments', function ($arguments) {
// Generate the unsubscribe link based on the recipient's phone number
$unsubscribeLink = \WP_SMS\Newsletter::generateUnSubscribeUrlByNumber($arguments['to']);
// Append the unsubscribe link to the message content
$arguments['msg'] .= "\r" . $unsubscribeLink;
// Return the modified arguments
return $arguments;
});
Example 2: Replacing {display_name} Placeholder
This example demonstrates how to replace the {display_name}
placeholder with the subscriber’s name or the user’s display name before the SMS message is sent.
add_filter('wp_sms_single_dispatch_arguments', function ($arguments) {
// Retrieve the subscriber by mobile number
$subscriber = \WP_SMS\Newsletter::getSubscriberByMobile($arguments['to']);
// Retrieve the user by phone number
$user = \WP_SMS\Helper::getUserByPhoneNumber($arguments['to']);
// If the subscriber exists, replace {display_name} with the subscriber's name
if ($subscriber) {
$arguments['msg'] = str_replace('{display_name}', $subscriber->name, $arguments['msg']);
}
// If the user exists, replace {display_name} with the user's display name
elseif ($user) {
$arguments['msg'] = str_replace('{display_name}', $user->display_name, $arguments['msg']);
}
// Return the modified arguments
return $arguments;
});
Notes
- Make sure for these examples the option Delivery Method in Settings → SMS Gateways → SMS Dispatch is set to Batch SMS Queue.