Désactiver l'e-mail du mot de passe d'enregistrement de l'utilisateur

13

Ainsi, WordPress 4.3 dispose d'un nouveau système de mot de passe comme nous le savons tous. Malheureusement, ce nouveau système a supprimé la possibilité de NE PAS envoyer de courriels aux nouveaux utilisateurs.

Mon client utilisait un système dans lequel il envoyait un e-mail personnalisé à ses clients, enregistrant manuellement leurs e-mails, puis leur envoyant un e-mail avec les informations de connexion avec un message personnalisé. Nous sommes conscients que ce nouveau système essaie d'être plus sûr, mais cela ne fonctionne pas pour la quantité de contrôle qu'il souhaite.

J'ai trouvé le code suivant dans ma recherche d'une solution pour désactiver ces e-mails, mais je pense qu'ils ne désactivent les e-mails de notification que si l'e-mail d'un utilisateur est CHANGÉ pour les utilisateurs précédemment enregistrés, pas lors de sa création:

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

Quelqu'un connaît-il un moyen de désactiver ces e-mails de mot de passe initiaux envoyés après l'inscription?

Je vous remercie.

Lisa Cerilli
la source
2
Avez-vous essayé cela? add_filter( 'user_registration_email', '__return_false');
Abhik

Réponses:

9

Vous pouvez intercepter cet e-mail avant qu'il ne soit envoyé à l'aide du phpmailer_initcrochet.

Par défaut, ce crochet se déclenche avant l'envoi d'un e-mail. Dans la fonction ci-dessous, $phpmailersera une instance de PHPMailer , et vous pouvez utiliser ses méthodes pour supprimer le destinataire par défaut et manipuler l'e-mail avant son envoi.

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
    }
}
sxalexander
la source
cela fonctionne parfaitement, a complètement résolu mon problème et est également parfait pour d'autres utilisations. Merci pour une excellente réponse!
pattyd
3

En fait, cela dépend de la façon dont vous créez le nouvel utilisateur. Si vous le faites depuis l'administration - Utilisateurs - Ajouter nouveau, vous avez raison. Dans 4.3, malheureusement, vous ne pouvez pas désactiver l'envoi de l'e-mail 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 où vous créeriez vous-même un nouveau compte via la wp_insert_userfonction, qui n'envoie aucun e-mail par défaut.

Cette fonction peut être appelée ainsi.

wp_insert_user( $userdata );

Où le userdataparamètre 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 .

Emetrop
la source
Donc, cette fonction est appelée chaque fois qu'un nouvel utilisateur est créé, je suppose?
Lisa Cerilli
3

La wp_new_user_notificationfonction est enfichable, vous pouvez donc la remplacer en définissant la vôtre. Vous devriez pouvoir copier la fonction entière de wp-includes/pluggable.phpdans votre plugin (ou functions.php) et supprimer la ligne qui envoie l'e-mail.

Simon Blackbourn
la source
1
Vous ne pouvez pas remplacer wp_new_user_notification dans le fichier functions.php du thème, car les fonctions enfichables sont chargées avant le thème. Il doit être remplacé par le plugin ou le mu-plugin. En savoir plus: wordpress.stackexchange.com/a/55966/56759
fandasson
1

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

Ensuite, continuez comme Simon l'a suggéré - copiez la wp_new_user_notifications.phpméthode wp-includes/pluggable.phpdans votre tout nouveau wp_new_user_notifications.phpfichier et modifiez-la si nécessaire.

Pour répondre à votre question: pour désactiver les e-mails de mot de passe initial, il suffit de supprimer le dernier wp_mailappel de méthode.

fandasson
la source
0
add_filter('send_password_change_email', '__return_false');

Travaux. Mais il est essentiel qu'il soit ajouté au plugin lui-même et non au functions.php pour le thème.

Comme.

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

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
Philippe
la source