如何防止用户/作者看到新评论员的IP/电子邮件?

时间:2019-01-10 作者:FTLRalph

我在WordPress上安装了一个插件,允许用户提出建议。这导致他们成为一篇文章的作者(尽管他们的角色仍然只是“订阅者”)。

我收到的报告称,这些用户随后收到了我(作为管理员)在网站上所有其他帖子(因为我是默认作者)通常收到的“关于你帖子的新评论”电子邮件。

This isn\'t good as it shows the commentators email and IP. This should be reserved for admins only.

有什么方法可以避免这种情况?或者不允许将这些电子邮件发送给非管理员,或者将所有类似的电子邮件重新路由到管理员,或者为非管理员提供不同的电子邮件模板?

enter image description here

1 个回复
SO网友:butlerblog

我可能会用一种wp_mail 筛选以在发送这些消息之前捕获它们。在我看来,这是最简单的方法。

您可以创建一个筛选功能来筛选电子邮件内容,并使用这些电子邮件特有的关键元素。我的示例只针对正文中包含的“对您的帖子发表新评论”,尽管您可能希望微调并使用其他文本。

我们还将比较邮件的电子邮件地址。我将使用db中存储的地址作为站点的管理电子邮件。如果您有不同的地址,则需要更改此地址。

add_filter( \'wp_mail\', \'my_wp_mail_filter\' );
function my_wp_mail_filter( $args ) {

    // Get the site admin email.
    $admin_email = get_option( \'admin_email\' );

    // What string are we looking for in the body?
    $needle = "New comment on your post";

    // Is this a new comment notification email?
    // Check for "New comment on your post" in body of message.
    if ( strpos( $args[\'message\'], $needle ) ) {
        // If this is a new comment notification, who is it going to?
        // Check to see if the "to" address is not the admin.
        if ( $args[\'to\'] != $admin_email ) {
            // This message is going to someone OTHER THAN the admin.
            // Return an empty array (dump all content, so email fails).
            return array();
        }
    }

    // Otherwise return unfiltered (so process can continue).
    return $args;
}