如何以模块化和程序化方式禁用所有WordPress电子邮件?

时间:2018-04-28 作者:Swen

我想模块化地禁用WordPress发送的电子邮件,以便在必要时用我自己的自定义电子邮件替换它们。

我试着在谷歌上搜索过滤器挂钩列表,但找不到我想要的那么全面的东西。到目前为止,我发现了这两个:

/**
 * Disable default WordPress emails.
 */
add_filter( \'send_password_change_email\', \'__return_false\' );
add_filter( \'send_email_change_email\', \'__return_false\' );
WordPress是否有用于发送电子邮件的资源或所有过滤器挂钩的列表?

更新另一个选项,如中所述kirillrocks\'s answer 是完全禁用wp_mail() 作用然而,这对于我的用例来说是不可取的,因为它禁用了所有电子邮件。对于我的用例,我想单独禁用所有邮件,以便以后可以用我自己的电子邮件“覆盖”它们,但仍然使用wp_mail() 函数发送它们。

2 个回复
SO网友:kirillrocks

Option 1: 从中删除“to”参数wp_mail 在WordPress中的功能,它将保持您的系统运行,而不发送任何默认WordPress电子邮件。

add_filter(\'wp_mail\',\'disabling_emails\', 10,1);
function disabling_emails( $args ){
    unset ( $args[\'to\'] );
    return $args;
}
Thewp_mailphpmailer 类,如果没有收件人,则不会发送任何电子邮件。

Option 2: 直接挂钩到phpmailer类ClearAllRecipients 从那里开始

function my_action( $phpmailer ) {
    $phpmailer->ClearAllRecipients();
}
add_action( \'phpmailer_init\', \'my_action\' );
Option 3: 继续使用wp_mail 满足您自己的需要,但禁用其他所有功能。

add_filter(\'wp_mail\',\'disabling_emails\', 10,1);
function disabling_emails( $args ){
    if ( ! $_GET[\'allow_wp_mail\'] ) {
        unset ( $args[\'to\'] );
    }
    return $args;
}
当你打电话的时候wp_mail 使用方法如下:

$_GET[\'allow_wp_mail\'] = true;
wp_mail( $to, $subject, $message, $headers );
unset ( $_GET[\'allow_wp_mail\'] ); // optional

https://react2wp.com/wordpress-disable-email-notifications-pragmatically-in-code-fix/

不客气!

SO网友:user141080

要更改“更改密码”电子邮件和“更改电子邮件”电子邮件的内容,您可以使用过滤器"password_change_email""email_change_email".

“password\\u change\\u email”过滤器示例:

function my_change_email($pass_change_email, $user, $userdata )
{   
   $pass_change_email[\'message\'] = "Hello this is my email content.";

   return $pass_change_email;
}


add_filter( \'password_change_email\', \'my_change_email\' );

结束

相关推荐

Contact form sender email

我在Google上花费了大量的时间,却找不到解决方案。我正在使用Wordpress,我想找到一些插件或任何其他解决方案,可以做到以下几点:当用户在我的网站上发送联系人表单时,我会在我的Gmail上收到它,但发件人电子邮件是默认的Wordpress电子邮件。我想如果发件人的电子邮件可以是他们在联系表格中输入的电子邮件地址。所以,如果[email protected]给我发一份联系表格,如果我能收到[email protected],而不是来自[email protected].我希望这可以通过这样或那样的方式