[Forminator Pro] I want to customize the user registration email

I have a user registration form that I created in forminator and it’s working great with one exception.  It is set up so that I (admin) must approve new members as they register.  The only problem is that I want to update the default email that goes to the user once they are approved.  The current email is:

Dear xxx,

Your account on xxx has been activated! Please find your login details below.

Login page: xxx

Username: xxx

Password: Use the password that you submitted when registering your account, or set a new password at the link below.

<xxx>

This message was sent from xxx


I’d like to add some additional custom information to this form.  I’ve tried “Better Notifications for WP” plugin (Notification For: New User Registration – For User) which had no effect. I also tried a filter on the “wp_new_user_notification_email” hook, but that didn’t work either.  Is there a WPMU hook I can use or other way I can customize this email?

thanks!
 

  • Nebu John
    • FLS

    Hi Dave ,

    I hope you are keeping well and thank you for reaching out to us.

    Could you please try adding the following code snippet using a mu-plugin?

    add_filter(
    	'forminator_custom_form_user_registration_before_insert',
    	function ( $new_user_data ) {
    		add_action( 'user_register', 'wpmudev_forminator_filter_user_register_email', 10, 2 );
    
    		return $new_user_data;
    	}
    );
    
    function wpmudev_forminator_filter_user_register_email( int $user_id, array $userdata ) {
    	remove_action( 'user_register', 'wpmudev_forminator_filter_user_register_email' );
    
    	add_filter(
    		'wp_mail',
    		function ( array $mail_args ) use ( $user_id, $userdata ) {
    			$needle       = 'Account Activated';
    			$filter_email = substr( $mail_args['subject'], - strlen( $needle ) ) === $needle;
    
    			if ( $filter_email ) {
    				$userdata['user_id']  = $user_id;
    				$mail_args['message'] = wpmudev_forminator_registration_email_template( $userdata );
    				$mail_args['headers'] = array( 'Content-Type: text/html; charset=UTF-8' );
    
    				remove_action( 'user_register', 'wpmudev_forminator_filter_user_register_email', 10 );
    			}
    
    			return $mail_args;
    		}
    	);
    }
    
    function wpmudev_forminator_registration_email_template( array $user_data = array() ) {
    	if ( empty( $user_data ) ) {
    		return __( 'Hey! You have registered succesfully!' );
    	}
    
    	extract( $user_data );
    
    	$user            = get_user_by( 'id', $user_id );
    	$site_name       = get_bloginfo( 'name' );
    	$home_url        = home_url();
    	$login_page      = wp_login_url();
    	$key             = get_password_reset_key( $user );
    	$pass_reset_link = network_site_url( "wp-login.php?action=rp&key={$key}&login=" . rawurlencode( $user_login ), 'login' );
    
    	$tpl = "Dear {$user_login},
    
    <p>Your account on {$site_name} has been activated! Please find your login details below.</p>
    
    <p>Login page: {$login_page}</p>
    
    <p>Username: qwe2</p>
    
    <p>
    Password: Use the password that you submitted when registering your account, or set a new password at the link below.<br />
    <a href=\"{$pass_reset_link}\">{$pass_reset_link}</a>
    </p>
    
    <p>This message was sent from http://single2.local</p>";
    
    	do_action( 'retrieve_password_key', $user_login, $key );
    
    	return $tpl;
    }

    Please note, any changes should be made in the wpmudev_forminator_registration_email_template() function. Please test the code using a dev/staging environment before pushing it to the staging. Please find more about how to add a mu-plugin in our documentation here: https://wpmudev.com/docs/using-wordpress/installing-wordpress-plugins/#installing-mu-plugins

    I hope that helps. Please feel free to get back to us if you need any further assistance, we are happy to help.

    Kind Regards,
    Nebu John