Desativar email de senha de registro do usuário

13

Portanto, o WordPress 4.3 possui um novo sistema de senhas, como todos sabemos. Infelizmente, este novo sistema eliminou a capacidade de NÃO enviar um email a novos usuários.

Meu cliente estava usando um sistema em que ele enviava um email personalizado para ele, registrando manualmente seus emails e enviando um email com as informações de login com uma mensagem personalizada. Estamos cientes de que esse novo sistema está tentando ser mais seguro, mas isso não funciona para a quantidade de controle que ele gostaria.

Encontrei o código a seguir na minha busca por uma solução para desativar esses emails, mas acho que eles desativam os emails de notificação apenas se o email de um usuário for ALTERADO para usuários registrados anteriormente, não quando ele for criado:

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

Alguém sabe como desativar esses e-mails de senha inicial enviados após o registro?

Obrigado.

Lisa Cerilli
fonte
2
Você já tentou isso? add_filter( 'user_registration_email', '__return_false');
Abhik

Respostas:

9

Você pode interceptar este email antes de enviá-lo usando o phpmailer_initgancho.

Por padrão, esse gancho é acionado antes que qualquer email seja enviado. Na função abaixo, $phpmailerhaverá uma instância do PHPMailer e você pode usar seus métodos para remover o destinatário padrão e manipular o email antes de ser enviado.

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
fonte
isso funciona perfeitamente, resolveu completamente o meu problema e também é perfeito para outros usos. Obrigado por uma ótima resposta!
22417 pattyd
3

Na verdade, depende de como você cria o novo usuário. Se você fizer isso da administração - Usuários - Adicionar novo, você está certo. Infelizmente, na versão 4.3, você não pode desativar o envio do email de notificação. Mas se você realmente deseja criar um novo usuário sem o email, existe uma maneira.

Você pode criar um pequeno plug-in no qual criaria uma nova conta por meio da wp_insert_userfunção, que não envia nenhum email por padrão.

Esta função pode ser chamada assim.

wp_insert_user( $userdata );

Onde o userdataparâmetro é uma matriz onde você pode passar todas as informações necessárias.

$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;
}

Para mais informações, consulte o codex aqui .

Emetrop
fonte
Então, essa função é chamada sempre que um novo usuário é criado, estou assumindo?
Lisa Cerilli
3

A wp_new_user_notificationfunção é plugável, para que você possa substituí-la definindo sua própria. Você deve poder copiar toda a função do wp-includes/pluggable.phpseu plug-in (ou functions.php) e remover a linha que envia o email.

Simon Blackbourn
fonte
1
Você não pode substituir wp_new_user_notification em functions.php do tema, porque funções plugáveis ​​são carregadas antes do tema. Ele deve ser substituído no plug-in ou no mu-plugin. Leia mais: wordpress.stackexchange.com/a/55966/56759
fandasson
1

Para resolver isso no seu tema, crie um novo mu-plugin criando um novo arquivo wp_new_user_notifications.php(o nome é seu) e coloque-o na wp-content/mu-pluginspasta Se não houver uma pasta como essa, crie uma. Lembre-se de colocar o arquivo php diretamente na pasta, e não em nenhuma subpasta.

Depois continue como Simon sugeriu - copie o wp_new_user_notifications.phpmétodo wp-includes/pluggable.phppara seu novo wp_new_user_notifications.phparquivo e modifique-o conforme necessário.

Para responder à sua pergunta: para desativar os e-mails com senha inicial, basta remover a última wp_mailchamada de método.

fandasson
fonte
0
add_filter('send_password_change_email', '__return_false');

Trabalho. Mas é essencial que ele seja adicionado ao plugin e não o functions.php do tema.

Gostar.

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

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
Philip
fonte