사용자 등록 비밀번호 이메일 비활성화


13

따라서 WordPress 4.3에는 우리 모두가 알고 있듯이 새로운 암호 시스템이 있습니다. 불행히도이 새로운 시스템은 새로운 사용자에게 이메일을 보내지 않을 수 있는 능력을 제거했습니다 .

내 고객은 자신의 고객에게 맞춤 이메일을 전송하고 수동으로 이메일을 등록한 다음 로그인 정보가 포함 된 이메일을 맞춤 메시지와 함께 전송하는 시스템을 사용하고있었습니다. 우리는이 새로운 시스템이 더 안전 해 지려고 노력하고 있지만, 그가 원하는 제어 수준에서는 작동하지 않습니다.

이러한 전자 메일을 해제하는 솔루션에 대한 검색에서 다음 코드를 찾았지만 사용자의 전자 메일이 처음 생성되었을 때가 아니라 이전에 등록 된 사용자의 전자 메일로 변경된 경우에만 알림 전자 메일을 해제한다고 생각합니다.

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

누구나 등록 후 보낸 초기 비밀번호 이메일을 끄는 방법을 알고 있습니까?

감사합니다.


2
이것을 시도 했습니까? add_filter( 'user_registration_email', '__return_false');
Abhik

답변:


9

이 이메일을 phpmailer_init후크를 사용하여 보내기 전에 가로 챌 수 있습니다 .

기본적으로이 후크는 이메일을 보내기 전에 시작됩니다. 아래 함수 $phpmailer에서 PHPMailer 의 인스턴스가되며, 메소드를 사용하여 기본 수신자를 제거하고 이메일을 보내기 전에 조작 할 수 있습니다.

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

이것은 완벽하게 작동하고 내 문제를 완전히 해결했으며 다른 용도에도 완벽합니다. 좋은 답변 주셔서 감사합니다!
pattyd

3

실제로 새 사용자를 만드는 방법에 따라 다릅니다. 관리-사용자-새로 추가에서 수행하면 옳습니다. 4.3에서는 불행히도 알림 이메일 전송을 비활성화 할 수 없습니다. 그러나 이메일없이 새로운 사용자를 만들고 싶다면 방법이 있습니다.

wp_insert_user기본적으로 이메일을 보내지 않는 기능을 통해 직접 새 계정을 만드는 작은 플러그인을 만들 수 있습니다 .

이 함수는 다음과 같이 호출 할 수 있습니다.

wp_insert_user( $userdata );

여기서 userdata매개 변수는 필요한 모든 정보를 전달할 수있는 배열입니다.

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

자세한 내용은 여기에서 코덱을 확인 하십시오 .


그래서이 함수는 새로운 사용자가 생성 될 때마다 호출된다고 가정합니까?
Lisa Cerilli

3

wp_new_user_notification기능은 플러그 가능하므로 직접 정의하여 재정의 할 수 있습니다. 전체 기능을 wp-includes/pluggable.php플러그인 (또는 functions.php) 으로 복사 하고 이메일을 보내는 행을 제거 할 수 있어야합니다 .


1
테마 전에 pluggable 함수가로드되므로 테마의 functions.php에서 wp_new_user_notification을 대체 할 수 없습니다. 플러그인 또는 mu-plugin에서 재정의해야합니다. 더 읽기 : wordpress.stackexchange.com/a/55966/56759
fandasson

1

테마 에서이 문제를 해결하려면 새 파일 (이름은 사용자에게 달려 있음)을 만들어 새 mu-plugin 을 만들고 폴더에 wp_new_user_notifications.php넣으십시오 wp-content/mu-plugins. 이와 같은 폴더가 없으면 만듭니다. php 파일을 하위 폴더가 아닌 폴더에 직접 넣어야합니다.

Simon이 제안한 대로 계속 진행 하십시오. 새로운 파일 로 wp_new_user_notifications.php방법을 복사 하고 필요에 따라 수정하십시오.wp-includes/pluggable.phpwp_new_user_notifications.php

귀하의 질문에 대답하려면 : 초기 비밀번호 이메일을 해제하면 마지막 wp_mail메소드 호출 을 제거하기에 충분합니다 .


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

공장. 그러나 플러그인에 추가 된 것은 필수이며 테마의 functions.php가 아닙니다.

처럼.

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

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.