WordPress显示最近更新过的文章并通知已评论的用户

2018年7月17日     tovey    

我们有时候会因为一些功能的不完美或者代码的时效性、下载地址的更新等,对一些旧文章进行一些不定期更新,但是这种更新一旦没有及时通知访客,往往就没有什么意义了,访客很难知道。本篇文章将介绍如何使WordPress显示最近更新过的文章并通知已评论的用户。

展示更新文章代码

将以下代码添加到主题的 functions.php里

  1. // Recently Updated Posts by zwwooooo | zww.me
  2. function recently_updated_posts($num=10,$days=7) {
  3. if( !$recently_updated_posts = get_option(‘recently_updated_posts’) ) {
  4.  query_posts(‘post_status=publish&orderby=modified&posts_per_page=-1’);
  5. $i=0;
  6. while ( have_posts() && $i<$num ) : the_post();
  7. if (current_time(‘timestamp’) – get_the_time(‘U’) > 60*60*24*$days) {
  8. $i++;
  9. $the_title_value=get_the_title();
  10. $recently_updated_posts.='<li><a href=“‘.get_permalink().'” title=“‘.$the_title_value.'”>’
  11.  .$the_title_value.'</a><span class=“updatetime”><br />» 修改时间: ‘
  12.  .get_the_modified_time(‘Y.m.d G:i’).'</span></li>’;
  13.  }
  14. endwhile;
  15.  wp_reset_query();
  16. if ( !emptyempty($recently_updated_posts) ) update_option(‘recently_updated_posts’, $recently_updated_posts);
  17.  }
  18. $recently_updated_posts=($recently_updated_posts == ) ? ‘<li>None data.</li>’ : $recently_updated_posts;
  19. echo $recently_updated_posts;
  20. }
  21. function clear_cache_zww() {
  22.  update_option(‘recently_updated_posts’, ); // 清空 recently_updated_posts
  23. }
  24. add_action(‘save_post’, ‘clear_cache_zww’); // 新发表文章/修改文章时触发更新

调用方式

8 为展示文章数量,15 指15天内发表的文章除外,具体使用的时候可以根据自己的情况修改这两个参数。

  1. <h3>Recently Updated Posts</h3>
  2. <ul>
  3. <?php if ( function_exists(‘recently_updated_posts’) ) recently_updated_posts(8,15); ?>
  4. </ul>

相关参数说明:$num – 展示数量,$days – 几天内的新文章除外。

更新文章后邮件通知评论过的用户

将以下代码添加到functions.php中,会在修改编辑文章的页面添加一个选项,只有勾选才会邮件通知。

  1. /** 
  2.  * WordPress展示最近更新过的文章 并通知评论过的用户 
  3.  */
  4. //修改更新文章时邮件通知评论用户 
  5. add_action( ‘submitpost_box’, ‘lxtx_fo_submit_box’);
  6. function lxtx_fo_submit_box( ){
  7. echo ‘<div id=“fo_side-sortables” class=“meta-box-sortables ui-sortable”>’;
  8. echo ‘<div id=“fo_submit_box” class=“postbox “>’;
  9. echo ‘<div class=“handlediv” title=“点击以切换”><br></div>’;
  10. echo ‘<h3 class=“hndle”><span>邮件通知</span></h3>’;
  11. echo ‘<div class=“inside”><div class=“submitbox”>’;
  12. echo ‘ <div style=“padding: 10px 10px 0;text-align: left;”><label class=“selectit” title=“慎用此功能,重要文章才勾选嘛,以免引起读者反感哈”><input type=“checkbox” name=“FO_emaill_report_user” value=“true” title=“勾选此项,将邮件通知本文所有评论者”/>邮通知本文所有评论者</label></div>’;
  13. echo ‘</div></div>’;
  14. echo ‘</div>’;
  15. echo ‘</div>’;
  16. }
  17. //开始 
  18. add_action( ‘publish_post’, ‘lxtx_fo_emaill_report_users’ );
  19. function lxtx_fo_emaill_report_users($post_ID)
  20. {
  21. //如果未勾选保存,不进行任何操作 
  22. if($_POST[‘FO_emaill_report_user’] != ‘true’){
  23. return;
  24.  }  //修订版本不通知,以免滥用 
  25. if( wp_is_post_revision($post_ID) ){
  26. return;
  27.  }  //获取wp数据操作类 
  28. global $wpdb,$post;
  29. // 读数据库,获取文章的所有用户的email并且不重复 
  30. $emailauthor != ‘你自己的邮箱’;
  31. $wp_user_emails = $wpdb->get_results(“SELECT DISTINCT comment_author, comment_author_email FROM $wpdb->comments WHERE TRIM(comment_author_email) IS NOT NULL AND TRIM(comment_author_email) != ” AND TRIM(comment_author_email) != ‘$emailauthor’ AND comment_post_ID = $post->ID”);  // 获取博客名称 
  32. $blogname = wp_specialchars_decode(get_option(‘blogname’), ENT_QUOTES);
  33. // 获取博客URL 
  34. $blogurl = get_bloginfo(“siteurl”);  //文章链接 
  35. $post_link = get_permalink($post_ID);
  36. //文章标题$post -> post_title 
  37. $post_title = strip_tags($_POST[‘post_title’]);
  38. //文章内容$post->post_content 
  39. $post_content = strip_tags($_POST[‘post_content’]);
  40. //文章摘要 
  41. $output = preg_replace(‘/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,0}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,200}).*/s’,’\1′,$post_content).‘……’;  //邮件头,以免乱码 
  42. $message_headers = “Content-Type: text/html; charset=\”utf-8\”\n”;
  43. // 邮件标题 
  44. $subject = ‘您曾经来访过的《’.$post_title.’》文章更新通知。’;  foreach ( $wp_user_emails as $wp_user_email )
  45.  {
  46. // 邮件内容 
  47. $message = ‘
  48.  <div style=“MARGIN-RIGHT: auto; MARGIN-LEFT: auto;”>
  49.  <strong style=“line-height: 1.5; font-family:Microsoft YaHei;”>
  50.  亲爱的’.$wp_user_email->comment_author.’:
  51.  </strong>
  52.  <p style=“FONT-SIZE: 14px; PADDING-TOP: 6px”>
  53.  您曾经来访过的《’.$post_title.’》有更新,博主觉得有必要通知您,希望不会骚扰到您。
  54.  </p>
  55.  <p style=“FONT-SIZE: 14px; PADDING-TOP: 6px”>
  56.  文章标题:<a title=“‘.$post_title.'” href=“‘.$post_link.'” target=“_top”>’.$post_title.'</a>
  57.  <br/>
  58.  文章摘要:’.$output.’
  59.  </p>
  60.  <p style=“FONT-SIZE: 14px; PADDING-TOP: 6px”>
  61.  您可以点击链接
  62.  <a href=“‘.$blogurl.'” style=“line-height: 1.5;”>’.$blogname.'</a>
  63.  >
  64.  <a title=“‘.$post_title.'” href=“‘.$post_link.'” target=“_top”>’.$post_title.'</a>
  65.  详细查看
  66.  </p>
  67.  <p style=“font-size: 14px; padding-top: 6px; text-align: left;”>
  68.  <span style=“line-height: 1.5; color: rgb(153, 153, 153);”>
  69.  来自:
  70.  </span>
  71.  <a href=“‘.$blogurl.'” style=“line-height: 1.5;”>’.$blogname.'</a>
  72.  </p>
  73.  <div style=“font-size: 12px; border-top-color: rgb(204, 204, 204); border-top-width: 1px; border-top-style: solid; height: 35px; width: 500px; color: rgb(102, 102, 102); line-height: 35px; background-color: rgb(245, 245, 245);”>
  74.  该邮件为系统发送邮件,请勿直接回复!如有打扰,请向博主留言反映。灰常感谢您的阅读!
  75.  </div>
  76.  </div>’;
  77.  wp_mail($wp_user_email->comment_author_email, $subject$message$message_headers);
  78.  }
  79. }

效果截图

在WordPress后台编辑文章页面右上方出,有“邮件通知本文所有评论者”。

分类: wordpress教程
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

分享到微信朋友圈

WordPress显示最近更新过的文章并通知已评论的用户

打开微信,点击底部的“发现”
使用“扫一扫”即可将网页分享至朋友圈。

错误: 请输入一个有效的电子邮件地址

错误: 无效的邮箱

错误: 请输入您的姓氏

错误: 请输入你的名字

错误: 请输入用户名

错误: 请输入密码

错误: 请确认您的密码

错误: 密码和密码确认不匹配