Désactiver l'email d'enregistrement du mot de passe d'utilisateur

12

WordPress 4.3 a donc un nouveau système de mots de passe, comme nous le savons tous. Malheureusement, ce nouveau système ne permet plus de NOT d’envoyer un courrier électronique aux nouveaux utilisateurs.

Mon client utilisait un système dans lequel il envoyait un courrier électronique personnalisé à ses clients, enregistrant manuellement leurs courriers électroniques, puis leur envoyant un courrier électronique avec les informations de connexion avec un message personnalisé. Nous sommes conscients que ce nouveau système tente d’être plus sécurisé, mais cela ne fonctionne pas pour le degré de contrôle qu’il souhaiterait.

J'ai trouvé le code suivant dans ma recherche d'une solution pour désactiver ces courriels, mais je pense qu'ils désactivent uniquement les courriels de notification si la messagerie d'un utilisateur est MODIFIEE pour les utilisateurs déjà enregistrés, et non lors de sa création:

add_filter( 'send_password_change_email', '__return_false');
add_filter( 'send_email_change_email', '__return_false');

Quelqu'un sait-il qu'il existe un moyen de désactiver ces emails de mot de passe initial envoyés après l'enregistrement?

Merci.

    
posée Lisa Cerilli 21.08.2015 - 10:15

5 réponses

8

Vous pouvez intercepter cet e-mail avant de l'envoyer à l'aide du hook phpmailer_init .

Par défaut, ce hook se déclenche avant l'envoi de tout courrier électronique. Dans la fonction ci-dessous, $phpmailer sera une instance de PHPMailer , et vous pourrez utiliser ses méthodes pour supprimer le destinataire par défaut et manipuler l'email avant qu'il soit envoyé.

add_action('phpmailer_init', 'wse199274_intercept_registration_email');
function wse199274_intercept_registration_email($phpmailer){
    $admin_email = get_option( 'admin_email' );

    # Intercept username and password email by checking subject line
    if( strpos($phpmailer->Subject, 'Your username and password info') ){
        # clear the recipient list
        $phpmailer->ClearAllRecipients();
        # optionally, send the email to the WordPress admin email
        $phpmailer->AddAddress($admin_email);
    }else{
        #not intercepted
    }
}
    
réponse donnée sxalexander 08.12.2015 - 00:25
3

En fait, cela dépend de la manière dont vous créez le nouvel utilisateur. Si vous le faites depuis l’administration - Utilisateurs - Ajouter nouveau, vous avez raison. Malheureusement en 4.3, vous ne pouvez pas désactiver l'envoi du courrier électronique de notification. Mais si vous voulez vraiment créer un nouvel utilisateur sans l'email, il existe un moyen.

Vous pouvez créer un petit plugin dans lequel vous créeriez vous-même un nouveau compte via la fonction wp_insert_user , qui n'envoie aucun courrier électronique par défaut.

Cette fonction peut être appelée comme ceci.

wp_insert_user( $userdata );

Où le paramètre userdata est un tableau où vous pouvez transmettre toutes les informations nécessaires.

$userdata = array(
    'user_login'  =>  'login',
    'user_pass'   =>  'password',
);

$user_id = wp_insert_user( $userdata ) ;

//On success
if ( ! is_wp_error( $user_id ) ) {
    echo "User created : ". $user_id;
}

Pour plus d'informations, consultez le codex ici .

    
réponse donnée Emetrop 21.08.2015 - 18:41
3

La fonction wp_new_user_notification est connectable, vous pouvez donc la remplacer en définissant la vôtre. Vous devriez pouvoir copier toute la fonction de wp-includes/pluggable.php dans votre plugin (ou functions.php ) et supprimer la ligne qui envoie le courrier électronique.

    
réponse donnée Simon Blackbourn 25.08.2015 - 13:12
1

Pour résoudre ce problème dans votre thème, créez un nouveau mu-plugin en créant le nouveau fichier wp_new_user_notifications.php (le nom vous appartient). et le mettre dans le dossier wp-content/mu-plugins . S'il n'y a pas de dossier comme ça, créez-en un. N'oubliez pas de placer le fichier php directement dans le dossier, pas dans un sous-dossier.

Continuez comme suggestion de - copiez la méthode wp_new_user_notifications.php de wp-includes/pluggable.php dans votre tout nouveau wp_new_user_notifications.php fichier et modifier au besoin.

Pour répondre à votre question, il est suffisant de supprimer les derniers e-mails de la méthode wp_mail pour désactiver le mot de passe initial.

    
réponse donnée fandasson 16.10.2015 - 15:25
0
add_filter('send_password_change_email', '__return_false');

Fonctionne. Mais il est essentiel que cela soit ajouté au plugin lui-même et non au fichier functions.php du thème.

J'aime.

class ... {
  public function __construct() {
    ...
    $this->init_hooks();
  }

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
    
réponse donnée Philip 30.01.2018 - 15:54

Lire d'autres questions sur les étiquettes