阻止在OOP上下文中发送有关用户创建的电子邮件?

时间:2018-05-15 作者:dingo_d

我需要阻止网站上的任何用户创建电子邮件,我尝试覆盖负责邮件发送的任何可插入功能。唯一有效的是

$this->loader->add_filter( \'send_password_change_email\', $users, \'disable_email\' );
$this->loader->add_filter( \'send_email_change_email\', $users, \'disable_email\' );
thedisable_email 方法定义在Users

class Users {
  /**
   * Function that will disable email sending when user is created
   *
   * @return bool False.
   */
  public function disable_email() {
    return false;
  }

  ...
}
the$users 只是Users 类别,以及$this->loader 是的实例Loader 类,它保存筛选器。

但是当我创建WordPress用户时,我想阻止\'New User Registration\' 管理员和用户将获得的邮件。

我读到的是,我应该能够重写可插入函数,但唯一的方法是在插件的根文件中,在任何类之外定义它们。

所以我试过了

if( ! function_exists( \'wp_new_user_notification\' ) ) {
  function wp_new_user_notification( $user_id ) {
    return false
  }
}
但是检查我的邮件收集器(我使用的是VVV),它不起作用,因为邮件仍在通过。

我甚至试着覆盖wp_mail() 功能相同,但什么都没有发生。邮件仍在处理中。

我没有主意了。我需要阻止邮件,但我不知道怎么做:/

1 个回复
最合适的回答,由SO网友:kero 整理而成

send_password_change_emailsend_email_change_email 如果用户更改了密码或为其创建了帐户,是否使用过滤器向用户发送电子邮件。

是的not 负责“在您的网站上注册新用户”邮件。这样做的功能是wp_new_user_notification(), 这实际上是pluggable functions.

您可以简单地覆盖它,但我发现这样做非常棘手。相反,请删除操作(实际上wp_send_new_user_notifications, 它只不过是函数本身的包装器)。行动gets added like so

add_action( \'register_new_user\',      \'wp_send_new_user_notifications\' );
add_action( \'edit_user_created_user\', \'wp_send_new_user_notifications\', 10, 2 );
如果您“反转”该代码,它应该可以工作。假设加载程序与常规方法一样工作:

$this->loader->remove_action(
    \'register_new_user\',
    \'wp_send_new_user_notifications\'
);
$this->loader->remove_action(
    \'edit_user_created_user\',
    \'wp_send_new_user_notifications\',
    10,
    2
);

结束