禁用用户注册密码电子邮件


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 2015年

Answers:


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 '17

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

有关更多信息,请在此处查看Codex 。


所以我假设每次创建新用户时都会调用此函数?
丽莎·塞里利

3

wp_new_user_notification函数是可插入的,因此您可以通过定义自己的函数来覆盖它。您应该能够将整个函数从中复制wp-includes/pluggable.php到插件(或functions.php)中,并删除发送电子邮件的行。


1
您不能在主题的functions.php中覆盖wp_new_user_notification,因为可插入功能在主题之前加载。必须在插件或mu-plugin中覆盖它。阅读更多:wordpress.stackexchange.com/a/55966/56759
fandasson

1

为了解决这个问题,请通过创建新文件(名称取决于您)来创建新的mu插件wp_new_user_notifications.php,并将其放在wp-content/mu-plugins文件夹中。如果没有这样的文件夹,请创建一个。切记将php文件直接放入文件夹中,而不放在任何子文件夹中。

比西蒙建议的继续,将wp_new_user_notifications.php方法从复制wp-includes/pluggable.php到您的全新wp_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');
  }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.