WordPress发布新文章Email通知注册用户

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我

     很多WordPress博客都开放了用户注册的功能,用户可以参与到博客的内容建设当中来,也就是一个博客由多个用户来写。现在有这样的需求,如何实现在某一个用户发表文章后,其他用户都能收到Email通知?下面是实现方法:

     在当前的WordPress主题目录下的functions.php中,添加以下php代码就可以了:

function newPostNotify($post_ID) {
    if( wp_is_post_revision($post_ID) ) return;

    global $wpdb;
    $get_post_info = get_post($post_ID);
    if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {
        // 读数据库,获取所有用户的email
        $wp_user_email = $wpdb->get_col("SELECT DISTINCT user_email FROM $wpdb->users");
  
        // 邮件标题
        $subject = 'xx博客有新文章';

        // 邮件内容
        $message = '文章标题:' . get_the_title($post_ID) . '<br />';
        $message .= '文章网址:<a href="' . get_permalink($post_ID) . '">' . get_permalink($post_ID) . '</a><br />';

        // 发邮件
        $message_headers = "Content-Type: text/html; charset="utf-8"\n";
        wp_mail($wp_user_email, $subject, $message, $message_headers); 
    }
}

// 钩子,一旦WordPress有新文章发布或文章被修改即刻执行newPostNotify函数
add_action('publish_post', 'newPostNotify');

     代码已经添加了注释,相对来说是可以比较容易理解的,每次有新文章发布就会自动给所有注册用户发Email通知,不需要你任何干预。如果你的博客不能发邮件,可能是你的主机问题,问问你的主机客服是否支持PHP的mail()函数。如果你有成百上千个注册用户,那么你也就需要发这么多封邮件,可以预想你发布文章的时候就得等这些邮件发完,当然这也就意味着你的邮件可能会被一些邮件服务器判为垃圾邮件或者拒收。

     个人不太赞同这种做法,有种骚扰的嫌疑,毕竟不是每位注册用户都希望收到类似的邮件。

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-new-post-notify-by-email.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

45 条留言

点此留言
1 2 172
  1. 小T 小T

    请问下,如何做到,文章被评论后,邮件通知作者。

    • Ludou

      @小T 后台 – 设置 – 讨论,何时发送电子邮件,勾选""有人发表评论时"

1 2

发表留言