Email Users When Their Role Changes
Sends users a short email when an administrator changes their role, for example when a subscriber becomes an author.
Opens WPIDE on
Code
add_action( 'set_user_role', function ( $user_id, $role, $old_roles ) {
if ( empty( $old_roles ) || in_array( $role, (array) $old_roles, true ) ) {
return; // New registrations and unchanged roles.
}
$user = get_userdata( $user_id );
$names = wp_roles()->get_names();
if ( ! $user || empty( $names[ $role ] ) ) {
return;
}
$site = wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES );
wp_mail(
$user->user_email,
sprintf( '[%s] Your role has changed', $site ),
sprintf( "Hello %s,\n\nYour role on %s is now: %s.\n\nLog in: %s", $user->display_name, $site, translate_user_role( $names[ $role ] ), wp_login_url() )
);
}, 10, 3 );
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.