Vô hiệu hóa email mật khẩu đăng ký người dùng


13

Vì vậy, WordPress 4.3 có một hệ thống mật khẩu mới như chúng ta đều biết. Thật không may, hệ thống mới này đã loại bỏ khả năng KHÔNG gửi email cho người dùng mới.

Khách hàng của tôi đang sử dụng một hệ thống nơi anh ta gửi email tùy chỉnh cho khách hàng của mình, đăng ký thủ công email của họ và sau đó gửi email cho họ với thông tin đăng nhập với một thông điệp tùy chỉnh. Chúng tôi biết rằng hệ thống mới này đang cố gắng bảo mật hơn, nhưng điều này không hoạt động với số lượng kiểm soát mà anh ta muốn.

Tôi đã tìm thấy mã sau đây để tìm kiếm giải pháp tắt các email này, nhưng tôi nghĩ rằng họ chỉ tắt các email thông báo nếu email của người dùng THAY ĐỔI cho người dùng đã đăng ký trước đó, chứ không phải khi nó được tạo lần đầu:

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

Có ai biết cách tắt các email mật khẩu ban đầu này được gửi sau khi đăng ký không?

Cảm ơn bạn.


2
Bạn đã thử điều này? add_filter( 'user_registration_email', '__return_false');
Abhik

Câu trả lời:


9

Bạn có thể chặn email này trước khi nó được gửi bằng phpmailer_inithook.

Theo mặc định, hook này kích hoạt trước khi bất kỳ email nào được gửi. Trong hàm bên dưới, $phpmailersẽ là một phiên bản của PHPMailer và bạn có thể sử dụng các phương thức của nó để xóa người nhận mặc định và thao tác email trước khi nó được gửi.

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

nó hoạt động hoàn hảo, giải quyết hoàn toàn vấn đề của tôi và cũng hoàn hảo cho các mục đích sử dụng khác. Cảm ơn cho một câu trả lời tuyệt vời!
pattyd

3

Trên thực tế, nó phụ thuộc vào cách bạn tạo người dùng mới. Nếu bạn làm điều đó từ quản trị - Người dùng - Thêm mới, bạn đã đúng. Trong 4.3 không may, bạn không thể vô hiệu hóa việc gửi email thông báo. Nhưng nếu bạn thực sự muốn tạo một người dùng mới mà không cần email, có một cách.

Bạn có thể tự tạo một plugin nhỏ trong đó bạn tự tạo một tài khoản mới thông qua wp_insert_userchức năng, không gửi bất kỳ email nào theo mặc định.

Hàm này có thể được gọi như thế này.

wp_insert_user( $userdata );

Trong đó userdatatham số là một mảng nơi bạn có thể truyền tất cả thông tin cần thiết.

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

Để biết thêm thông tin kiểm tra codex ở đây .


Vì vậy, chức năng này được gọi bất cứ khi nào một người dùng mới được tạo ra tôi giả sử?
Lisa Cerilli

3

Các wp_new_user_notificationchức năng là pluggable, vì vậy bạn có thể ghi đè lên nó bằng cách định nghĩa của riêng bạn. Bạn sẽ có thể sao chép toàn bộ chức năng từ wp-includes/pluggable.phpvào plugin (hoặc functions.php) và xóa dòng gửi email.


1
Bạn không thể ghi đè wp_new_user_notification trong hàm.php của chủ đề, vì các hàm có thể cắm được tải trước chủ đề. Nó phải được ghi đè trong plugin hoặc mu-plugin. Đọc thêm: wordpress.stackexchange.com/a/55966/56759
fandasson

1

Để giải quyết vấn đề này trong chủ đề của bạn, hãy tạo mu-plugin mới bằng cách tạo tệp mới wp_new_user_notifications.php(tên tùy thuộc vào bạn) và đặt nó vào wp-content/mu-pluginsthư mục. Nếu không có thư mục như vậy, hãy tạo một thư mục. Hãy nhớ đặt tệp php trực tiếp vào thư mục, không cho bất kỳ thư mục con nào.

Hơn tiếp tục như Simon đề xuất - sao chép wp_new_user_notifications.phpphương pháp từ tệp wp-includes/pluggable.phpmới của bạn wp_new_user_notifications.phpvà sửa đổi khi cần.

Để trả lời câu hỏi của bạn: để tắt e-mail mật khẩu ban đầu là đủ để loại bỏ wp_mailcuộc gọi phương thức cuối cùng .


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

Làm. Nhưng điều cốt yếu là nó tự thêm vào plugin chứ không phải hàm.php cho chủ đề.

Giống.

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

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.