狐狸聚合登录 狐狸导航 大流量卡免运费 此位置招租 阿里云99元服务器 腾讯云99元服务器 华为云特惠活动进行中 任推邦 - 不扣量的项目拉新平台 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租
返回列表 发布新帖
查看: 11|回复: 0

[模板主题] 7b2主题实现用户发布或更新文章后,通知粉丝

112

主题

1

回帖

1万

积分

管理员

积分
14495
发表于 昨天 16:02 | 查看全部 |阅读模式 IP:山东
在社交化的博客平台中,当作者发布或更新文章时,及时通知其粉丝是一个非常实用的功能。本教程将指导您如何在7b2主题中实现这个功能,让您的粉丝能够第一时间收到文章更新的通知。

功能介绍
实现后的效果:
  • 当作者发布新文章时,其粉丝会收到站内通知和邮件通知
  • 当作者更新已发布的文章时,其粉丝同样会收到通知
  • 通知包含文章标题和链接,方便粉丝直接查看


实现步骤1. 添加代码位置将以下代码添加到7b2子主题的functions.php文件中。如果您还没有创建子主题,建议先创建一个子主题再进行修改。2. 完整代码实现
  1. function notify_followers($new_status, $old_status, $post) {
  2.     if (!is_object($post) || $post->post_type != 'post' || $new_status != 'publish') return;
  3.     if (defined('DOING_AUTOSAVE') || wp_is_post_revision($post->ID)) return;
  4.    
  5.     try {
  6.         $author_id = $post->post_author;
  7.         if(!$author_id) return;
  8.         
  9.         global $wpdb;
  10.         $table_name = $wpdb->prefix . 'b2_msg';
  11.         $is_new = ($old_status != 'publish' && $new_status == 'publish');
  12.         
  13.         $followers = $wpdb->get_results($wpdb->prepare(
  14.             "SELECT u.ID, u.user_email, um.meta_value
  15.             FROM {$wpdb->users} u
  16.             INNER JOIN {$wpdb->usermeta} um ON u.ID = um.user_id
  17.             WHERE um.meta_key = %s",
  18.             'zrz_follow'
  19.         ));
  20.         if(empty($followers)) return;
  21.         foreach($followers as $follower) {
  22.             $following = maybe_unserialize($follower->meta_value);
  23.             if(!is_array($following) || !in_array($author_id, $following)) continue;
  24.             // 发送系统通知
  25.             $msg_data = array(
  26.             'date' => current_time('mysql'),
  27.             'from' => serialize(array(0)), // 系统发送
  28.             'count' => 1,
  29.             'to' => $follower->ID,
  30.             'msg' => sprintf(
  31.                '您关注的作者 %s %s了文章《<a href="%s">%s</a>》,快来看看吧~',
  32.                 get_the_author_meta('display_name', $author_id),
  33.                 $is_new ? '发布' : '更新',
  34.                 get_permalink($post->ID),
  35.                 $post->post_title
  36.             ),
  37.             'type' => get_permalink($post->ID),
  38.             'type_text' => $is_new ? '新文章通知' : '文章更新通知',
  39.             'post_id' => $post->ID,
  40.             'read' => 0
  41.             );
  42.             $wpdb->insert($table_name, $msg_data);
  43.             // 更新未读消息计数
  44.             delete_user_meta($follower->ID, 'b2_user_unread_msg');
  45.             // 发送邮件通知
  46.             $subject = get_bloginfo('name') . ': ' . ($is_new ? '新文章通知' : '文章更新通知');
  47.             $message = '<!DOCTYPE html>
  48.             <html>
  49.             <head>
  50.                 <meta charset="UTF-8">
  51.             </head>
  52.             <body style="margin: 0; padding: 20px; background-color: #f5f5f5; font-family: Arial, sans-serif;">
  53.                 <div style="max-width: 600px; margin: 0 auto; background-color: #ffffff; padding: 20px; border-radius: 5px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
  54.                     <h1 style="color: #333; margin-bottom: 20px; text-align: center;">' .
  55.                     ($is_new ? '新文章通知' : '文章更新通知') . '</h1>
  56.                     <div style="border-left: 4px solid #0073aa; padding-left: 15px; margin: 20px 0;">
  57.                         <h2 style="color: #333; margin: 0 0 10px 0;">' . $post->post_title . '</h2>
  58.                         <p style="color: #666; line-height: 1.6; margin: 10px 0;">
  59.                             您关注的作者' . get_the_author_meta('display_name', $author_id) .
  60.                             ($is_new ? '新文章通知' : '文章更新通知') . ',快来看看吧!
  61.                         </p>
  62.                     </div>
  63.                     <div style="text-align: center; margin-top: 30px;">
  64.                         <a href="' . get_permalink($post->ID) . '"
  65.                            style="display: inline-block; padding: 10px 20px; background-color: #0073aa; color: #fff; text-decoration: none; border-radius: 3px;">
  66.                             阅读文章
  67.                         </a>
  68.                     </div>
  69.                     <div style="margin-top: 30px; padding-top: 20px; border-top: 1px solid #eee; text-align: center; color: #999; font-size: 12px;">
  70.                         <p>此邮件由' . get_bloginfo('name') . '系统自动发送,请勿直接回复</p>
  71.                     </div>
  72.                 </div>
  73.             </body>
  74.             </html>';
  75.             $headers = array(
  76.                 'Content-Type: text/html; charset=UTF-8',
  77.                 'From: ' . get_bloginfo('name') . ' <' . get_bloginfo('admin_email') . '>'
  78.             );
  79.             wp_mail($follower->user_email, $subject, $message, $headers);
  80.         }
  81.     } catch(\Exception $e) {
  82.         error_log('发送通知失败: ' . $e->getMessage());
  83.     }
  84. }
  85. add_action('transition_post_status', 'notify_followers', 999, 3);
复制代码
代码说明主要功能模块
  • 触发条件检查
    • 检查是否为文章发布状态
    • 排除自动保存和修订版本
    • 验证作者ID是否有效
  • 粉丝数据获取
    • 通过WordPress数据库查询获取所有可能的粉丝
    • 解析每个用户的关注数据
    • 确认是否真实关注了文章作者
  • 站内通知
    • 向b2_msg表插入通知记录
    • 更新用户未读消息计数
    • 包含文章标题和链接信息
  • 邮件通知
    • 使用HTML模板构建美观的邮件内容
    • 包含文章标题、作者信息和阅读按钮
    • 设置正确的邮件头部信息

注意事项
  • 确保您的WordPress邮件发送功能正常工作
  • 代码使用try-catch进行错误处理,避免影响正常的文章发布流程
  • 通知模板可以根据需要自定义样式
  • 函数优先级设置为999,确保在其他操作之后执行
故障排查
如果通知功能不正常,请检查:
  • WordPress邮件发送功能是否正常
  • 数据库表结构是否正确
  • 错误日志中是否有相关错误信息
  • 用户关注数据是否正确保存
希望这个教程能帮助您顺利实现粉丝通知功能。如果您在实施过程中遇到任何问题,欢迎留言讨论。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究,不得用于商业或者非法用途,否则,一切后果请用户自负;本站信息来自网络收集整理,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除相应的内容;如果您喜欢该内容,请支持正版,得到更好的服务;我们非常重视版权问题,如有侵权请与我们联系,敬请谅解!

联系我们: 如有疑问或发现违规行为,请联系管理员:brynn@foxccs.com

什么是人,欲望满身。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

brynn@foxccs.com

欢迎各位朋友加入本社区,
共同维护良好的社区氛围
  • 加入QQ用户群
  • 关注公众号
Copyright © 2001-2024 九歌论坛 版权所有 All Rights Reserved.
关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表