Comment changer l'email d'inscription par défaut? (plugin et / ou non-plugin)

54

Après une nouvelle inscription d'utilisateur, WP envoie un courrier électronique avec le nom d'utilisateur / mot de passe et un lien vers la page de connexion.

Existe-t-il un moyen de changer ce modèle de courrier électronique par défaut? J'aimerais aussi changer de sujet et d'expéditeur.

Edit: Pour les personnes intéressées, voici une solution de plugin.

mike23
la source

Réponses:

62

le nouvel email de l'utilisateur est envoyé en utilisant la wp_new_user_notification()fonction qui est connectable, ce qui signifie que vous pouvez l'écraser:

// Redefine user notification function
if ( !function_exists('wp_new_user_notification') ) {
    function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
        $user = new WP_User($user_id);

        $user_login = stripslashes($user->user_login);
        $user_email = stripslashes($user->user_email);

        $message  = sprintf(__('New user registration on your blog %s:'), get_option('blogname')) . "\r\n\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
        $message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";

        @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), get_option('blogname')), $message);

        if ( empty($plaintext_pass) )
            return;

        $message  = __('Hi there,') . "\r\n\r\n";
        $message .= sprintf(__("Welcome to %s! Here's how to log in:"), get_option('blogname')) . "\r\n\r\n";
        $message .= wp_login_url() . "\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n";
        $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n\r\n";
        $message .= sprintf(__('If you have any problems, please contact me at %s.'), get_option('admin_email')) . "\r\n\r\n";
        $message .= __('Adios!');

        wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_option('blogname')), $message);

    }
}
Bainternet
la source
@Bainternet Je n'arrive pas à obtenir que cela fonctionne, je l'ai ajouté à mon fichier de fonctions, mais le courrier électronique standard continue à envoyer. Je suis sur plusieurs sites, mais cela ne devrait pas avoir d'importance, non?
6
OK obtenu maintenant, il semble seulement fonctionner comme un plugin séparé, pas lorsque vous l'ajoutez à votre functions.phpfichier. Maintenant cela fonctionne parfaitement, merci encore pour ce beau morceau de code!
Cela fonctionne-t-il également pour le multisite? Je peux voir que multisite a un tas de fonctions dans ms-functions.php pour envoyer un email de notification.
Sisir
Multisite utilise wpmu_signup_user_notificationje pense.
Wyck
Cette réponse a plusieurs années. La réponse acceptée ne fonctionne pas pour moi. (L'ajouter à functions.php n'a aucune incidence sur les courriers électroniques envoyés lorsqu'un nouvel utilisateur s'enregistre.) Devrais-je poser une nouvelle question?
Kit Johnson
23

Pour les utilisateurs à partir de 2018:

Depuis WordPress 4.9.0, il existe de nouveaux filtres que vous pouvez utiliser pour cela (plus besoin d'un plugin):

Exemple d'utilisation d'un courrier électronique envoyé à l'administrateur (vous pouvez le coller dans le fichier functions.php de votre thème ):

add_filter( 'wp_new_user_notification_email_admin', 'custom_wp_new_user_notification_email', 10, 3 );

function custom_wp_new_user_notification_email( $wp_new_user_notification_email, $user, $blogname ) {
    $wp_new_user_notification_email['subject'] = sprintf( '[%s] New user %s registered.', $blogname, $user->user_login );
    $wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) has registerd to your blog %s.", $user->user_login, $user->user_email, $blogname );
    return $wp_new_user_notification_email;
}
Edu Wass
la source
Vous pouvez également utiliser les filtres wp_new_user_notification_emailet wp_new_user_notification_email_admin. Les personnes intéressées peuvent consulter la documentation complète et le code source pour wp_new_user_notification().
Pete
Merci Pete, on dirait que cela a été introduit dans 4.9.0 et semble être une meilleure solution.
Edu Wass
3

Cela ne fonctionnera pas sur functions.php, vous devez mettre ce code dans le plugin.

si vous ne faites pas maintenant un plugin pour cela utilisez simplement ce lien

n'oubliez pas de prendre le code de mise à jour de cette forme de fonction ici

Erez Lieberman
la source