uo_ld_expire_group_email_message
Filters the content of the email sent when a user's group membership expires.
add_filter( 'uo_ld_expire_group_email_message', $callback, 10, 3 );
Description
Allows developers to modify the email message sent to users when a LearnDash group expires. This filter is applied before the email is sent, providing access to the message content, the affected user, and the group ID. Developers can alter the message subject or body to customize expiration notifications.
Usage
add_filter( 'uo_ld_expire_group_email_message', 'your_function_name', 10, 3 );
Parameters
-
$message(mixed) - This parameter contains the email message that will be sent regarding group expiration.
-
$user(mixed) - The `$message` parameter contains the email message that will be sent to the user(s).
-
$group_id(mixed) - This parameter contains the user object for the user who is being considered for group expiration notifications.
Return Value
The filtered value.
Examples
/**
* Modify the email message for LearnDash group expiration to include a custom greeting.
*
* @param string $message The default email message content.
* @param WP_User $user The user object for the recipient.
* @param int $group_id The ID of the LearnDash group.
* @return string The modified email message.
*/
add_filter( 'uo_ld_expire_group_email_message', function( $message, $user, $group_id ) {
// Construct a personalized greeting based on the user's display name.
$custom_greeting = "Dear {$user->display_name},nn";
// Prepend the custom greeting to the existing message.
$modified_message = $custom_greeting . $message;
return $modified_message;
}, 10, 3 );
Placement
This code should be placed in the functions.php file of your active theme, a custom plugin, or using a code snippets plugin.
Source Code
src/classes/learn-dash-group-expiration.php:805
public static function email_group( $group_id ) {
if ( 'yes' === self::$send_email && function_exists( 'learndash_group_enrolled_courses' ) ) {
if ( 'on' === self::$send_email_group_leader_only ) {
$user_ids = learndash_get_groups_administrator_ids( $group_id );
$user_ids = array_unique( $user_ids );
} else {
$user_ids = array_merge( learndash_get_groups_user_ids( $group_id ), learndash_get_groups_administrator_ids( $group_id ) );
$user_ids = array_unique( $user_ids );
}
if ( $user_ids ) {
$email_title = self::get_email_title( $group_id );
$email_body = self::get_email_body( $group_id );
$expiration_date = get_post_meta( $group_id, 'uo-expiration-date', true );
$group_name = get_the_title( $group_id );
$email_body = str_ireplace(
array(
'%LearnDash Group Name%',
'%expiration date%',
),
array(
$group_name,
$expiration_date,
),
$email_body
);
$headers = array();
$headers[] = 'Content-type: text/html; charset=UTF-8';
$headers[] = 'From: ' . get_bloginfo( 'name' ) . ' <' . get_bloginfo( 'admin_email' ) . '>';
$headers = apply_filters( 'uo_ld_expire_group_email_headers', $headers );
foreach ( $user_ids as $user_id ) {
$group_progress = learndash_get_user_group_progress( $group_id, $user_id );
if ( true === apply_filters( 'uo_ld_expire_group_do_not_send_email_to_user', false, $user_id, $group_id, $group_progress ) ) {
continue;
}
$user = get_userdata( $user_id );
$email = $user->user_email;
$user_name = $user->display_name;
$message = str_ireplace( '%display name%', $user_name, $email_body );
$message = nl2br( stripcslashes( $message ) );
$message = wpautop( $message );
$message = apply_filters( 'uo_ld_expire_group_email_message', $message, $user, $group_id );
$sub = apply_filters( 'uo_ld_expire_group_email_subject', $email_title, $user, $group_id );
wp_mail( $email, $sub, $message, $headers );
}
}
}
update_post_meta( $group_id, 'uo-email-group-sent', current_time( get_option( 'date_format' ) . ' H:i:s' ) );
wp_clear_scheduled_hook( 'uo-email-group', array( $group_id ) );
}