如何连接到BackWPup使用的wp_mail函数?

时间:2019-07-26 作者:BlueDogRanch

我知道这个问题部分与第三方插件backwup有关,这是一个离题的问题,但一般来说,就WordPress和PHP而言:是否可以连接到wp\\u mail函数,以便我可以将文本附加到插件的PHP生成的电子邮件中?

该电子邮件由WordPress数据库备份插件BackwUp发送,该电子邮件包含有关备份文件的成功或失败消息。在我的情况下,电子邮件将发送到一般的电子邮件支持地址,可能会被不完全熟悉如何处理电子邮件的人接收。我需要能够在电子邮件中添加更多的指导性和解释性文本,最好是在电子邮件的开头。

我需要使用外部php函数添加该文本,因为如果我修改插件,插件更新时更改将被覆盖;所以我需要在主题的函数中添加函数。php文件,或者制作我自己的简单WordPress插件。

这个wp_mail 所用插件中的函数似乎是:

wp_mail(
$this->job[\'mailaddresslog\'],
$subject,
file_get_contents( $this->logfile ),
$headers
);
是否可以钩住$message并添加其他文本?已替换为file_get_contents 在函数中。我需要加入file_get_contents?

https://developer.wordpress.org/reference/functions/wp_mail/

Edit 7/28/19

我为主题行添加了一个检查,因为所有发送的电子邮件都附加了额外的文本。现在,只有备份电子邮件才能获得额外的文本。

add_filter( \'wp_mail\', \'wpse343761_filter_message\' );
function wpse343761_filter_message( $atts ) {

    if ( stripos( $atts[\'subject\'], \'BackWPup\')) {

    if ( ! empty( $atts[\'message\'] ) ) {
        $atts[\'message\'] .= \'Your additional text\';
    }
}
    return $atts;
}
关于修改的新问题message: 如何使用strip_tagsmessage 要将默认html电子邮件转换为非html电子邮件?正在添加strip_tags($atts[\'message\']);return 什么都不做。

还有,如何将“附加短信”添加到电子邮件的开头?现在已经添加到末尾了。

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

查看wp_mail() 函数,顶部附近有一个过滤器:

$atts = apply_filters( 
    \'wp_mail\', 
    compact( \'to\', \'subject\', \'message\', \'headers\', \'attachments\' )
);
// Expanded for clarity.
(旁白:compact() 是一个PHP函数,用于从一组参数创建数组。在本例中,它将生成$to, $subject, $message, $headers, 和$attachments 传递给的参数wp_mail().)

。。。然后再进一步:

if ( isset( $atts[\'subject\'] ) ) {
    $subject = $atts[\'subject\'];
}
因此,是的,您可以过滤消息。像这样的事情应该可以做到:

add_filter( \'wp_mail\', \'wpse343761_filter_message\' );
function wpse343761_filter_message( $atts ) {
    if ( ! empty( $atts[\'message\'] ) ) {
        // If there\'s already a message, add to it.
        $atts[\'message\'] .= \'Your additional text\';
    } else {
        // If there\'s not a message set yet, set one.
        $atts[\'message\'] = \'Your desired message\';
    }
    return $atts;
}
Note: 此代码未经测试。

Edit: 为了响应您的更新和,如何将“附加文本消息”添加到电子邮件的开头:

更改此行:

$atts[\'message\'] .= \'Your additional text\';
收件人:

$atts[\'message\'] = \'Your additional text\' . $atts[\'message\'];
和你的strip_tags() 使用问题,您可以执行以下操作:

$atts[\'message\'] = strip_tags( $atts[\'message\'] );
在你面前的线上return. (你不能只使用strip_tags( $atts[\'message\'] ) 因为这不会将剥离的字符串分配给任何对象。)

相关推荐

如何在PHP中从块属性序列化Gutenberg块?

我正在编写一个迁移脚本,它必须读取帖子的post\\u内容,然后动态更改一些自定义Gutenberg块的一些属性。我能够读取post\\u内容,然后使用parse_blocks 作用我还能够通过操纵块对象动态更改自定义块的属性。但我无法将这些块对象转换为Gutenberg用来序列化它们以便更新post\\u内容的特殊HTML注释。我发现WordPress core的PHP部分只有parse_blocks 函数将特殊HTML注释解析为块对象,并render_block 函数来渲染块,但没有serialize