Desativar o email de senha de registro do usuário

12

Então, o WordPress 4.3 tem um novo sistema de senha como todos nós sabemos. Infelizmente, este novo sistema eliminou a capacidade de NÃO enviar um email a novos utilizadores.

Meu cliente estava usando um sistema no qual enviava um e-mail personalizado para seus clientes, registrava manualmente seus e-mails e enviava um e-mail com as informações de login com uma mensagem personalizada. Estamos cientes de que este novo sistema está tentando ser mais seguro, mas isso não está funcionando para a quantidade de controle que ele gostaria.

Encontrei o seguinte código em minha busca de uma solução para desativar esses e-mails, mas acho que eles só desativam os e-mails de notificação se o e-mail de um usuário for CHANGED para usuários registrados anteriormente, não quando for criado pela primeira vez:

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

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

Obrigado.

    
por Lisa Cerilli 21.08.2015 / 10:15

5 respostas

8

Você pode interceptar este e-mail antes de enviá-lo usando o gancho phpmailer_init .

Por padrão, esse gancho é disparado antes que qualquer email seja enviado. Na função abaixo, $phpmailer será uma instância de 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
    }
}
    
por sxalexander 08.12.2015 / 00:25
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. Em 4.3, infelizmente, você não pode desabilitar o envio do email de notificação. Mas se você realmente quiser criar um novo usuário sem o email, existe uma maneira.

Você pode criar um pequeno plug-in no qual criará uma nova conta por meio de wp_insert_user function, que não envia nenhum e-mail por padrão.

Esta função pode ser chamada assim.

wp_insert_user( $userdata );

Onde o parâmetro userdata é 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 .

    
por Emetrop 21.08.2015 / 18:41
3

A função wp_new_user_notification é conectável, portanto, você pode substituí-la definindo a sua própria. Você deve conseguir copiar toda a função de wp-includes/pluggable.php no seu plug-in (ou functions.php ) e remover a linha que envia o e-mail.

    
por Simon Blackbourn 25.08.2015 / 13:12
1

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

Que continue como Simon sugeriu - copie o método wp_new_user_notifications.php de wp-includes/pluggable.php para o seu novo wp_new_user_notifications.php file e modifique conforme necessário.

Para responder à sua pergunta: para desativar os e-mails com senha inicial é suficiente remover a última chamada do método wp_mail .

    
por fandasson 16.10.2015 / 15:25
0
add_filter('send_password_change_email', '__return_false');

Funciona. Mas é essencial que seja adicionado ao plugin e não o functions.php para o tema.

Como.

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

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
    
por Philip 30.01.2018 / 15:54