Old

给老文章一个机会: Recently Updated Posts

我的博客有的文章需要不定期的更新(如WordPress主题更新、游戏资源更新),但是更新后访客不知道,访客也总不能几十页几十页去翻查有木有更新,所以我在主题 zwwooooo 版本2 上线时在侧边栏加上:Recently Updated Posts 了,中文就是:最近更新过的文章

我觉得很多博客可能也需要这类功能,特别是那些不断更新的共享类文章,因为这类文章无需一个版本就发布一篇文章。

我写成函数了,加了2个参数:$num - 展示数量,$days - 几天内的新文章除外

另外我加了数据库缓存方式,因为考虑到查询量,所以在你修改文章/删除文章/发表文章时才会更新缓存。

下面是方法和代码

1. 把下面的函数代码扔到主题的 functions.php

// Recently Updated Posts by zwwooooo | zww.me
function recently_updated_posts($num=10,$days=7) {
   if( !$recently_updated_posts = get_option('recently_updated_posts') ) {
       query_posts('post_status=publish&orderby=modified&posts_per_page=-1');
       $i=0;
       while ( have_posts() && $i<$num ) : the_post();
           if (current_time('timestamp') - get_the_time('U') > 60*60*24*$days) {
               $i++;
               $the_title_value=get_the_title();
               $recently_updated_posts.='<li><a href="'.get_permalink().'" title="'.$the_title_value.'">'
               .$the_title_value.'</a><span class="updatetime"><br />&raquo; 修改时间: '
               .get_the_modified_time('Y.m.d G:i').'</span></li>';
           }
       endwhile;
       wp_reset_query();
       if ( !empty($recently_updated_posts) ) update_option('recently_updated_posts', $recently_updated_posts);
   }
   $recently_updated_posts=($recently_updated_posts == '') ? '<li>None data.</li>' : $recently_updated_posts;
   echo $recently_updated_posts;
}

function clear_cache_zww() {
    update_option('recently_updated_posts', ''); // 清空 recently_updated_posts
}
add_action('save_post', 'clear_cache_zww'); // 新发表文章/修改文章时触发更新

2. 调用,如在侧边栏

<h3>Recently Updated Posts</h3>
<ul>
<?php if ( function_exists('recently_updated_posts') ) recently_updated_posts(8,15); ?>
</ul>

参数说明:8 为展示文章数量,15 指15天内发表的文章除外

就这样,有需要的朋友可以试试。

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25487

115 comments

  1. 野草博客 野草博客 Google Chrome 12 Google Chrome 12 Windows XP Windows XP

    野草觉得这个方法太费事了。
    参见野草旧作:《博客文章写作技巧:怎样修改自己以前文章的观点?》
    http://yeahcao.blog.hexun.com/46895374_d.html

    41楼
  2. zwwooooo zwwooooo Firefox 5 Firefox 5 Windows 7 Windows 7

    @野草博客
    我写文章很少写观点,难道我这类文章需要每个版本发布一篇文章么? http://zww.me/archives/25131
    要看具体情况,有些东西不是为了满足所有人的,有需求即有价值。

  3. 野草博客 野草博客 Google Chrome 12 Google Chrome 12 Windows XP Windows XP

    @zwwooooo
    说得有道理。
    不同的情境下,有不同的最佳解决方案:)

  4. ......
  5. 奚少 奚少 Firefox 5 Firefox 5 Windows 7 Windows 7

    嗯,这个很有必要的~~

    41楼
  6. zwuu zwuu Google Chrome 8 Google Chrome 8 Windows XP Windows XP

    博主,你这个解出来没- -!!
    原作,看不懂啊!!! 地址在wed那里..
    求解啊!!!!!!!!!

    42楼
  7. sprityaoyao sprityaoyao Firefox 5 Firefox 5 Windows XP Windows XP

    这个方法还是不错的,看看能不能移植

    43楼
  8. 囧啊囧 囧啊囧 Firefox 5 Firefox 5 Windows 7 Windows 7

    马上去测试下 :mrgreen:

    44楼
  9. 囧啊囧 囧啊囧 Firefox 5 Firefox 5 Windows 7 Windows 7

    函数我加了,但是边栏我只会小工具,不会修改文件,怎么办啊?

    45楼
  10. 倡萌 倡萌 Sogou Explorer Sogou Explorer Windows XP Windows XP

    很不错的功能,支持大叔

    46楼
  11. Punkhippie Punkhippie Firefox 5 Firefox 5 Windows 7 Windows 7

    不好意思,再來請教一個問題,我發現我安裝後顯這裡顯示的不一樣。
    我的會像下面這樣,中間多了一行,感覺好怪! :sad:

    zBench WordPress Theme

    » 修改时间: 2011.07.24 0:02

    47楼
  12. 郑永 郑永 Firefox 5 Firefox 5 Windows XP Windows XP

    这个东西用同步的话,就可以在微博上同步出来了,也等于提醒了。

    48楼
  13. 求索阁 求索阁 Google Chrome 10 Google Chrome 10 Windows 7 Windows 7

    其实更新文章后,可以顺便把发表日期也给更新了。呵呵。。。 :razz:

    49楼
  14. smilebull smilebull Google Chrome 13 Google Chrome 13 Windows 7 Windows 7

    这个很有用,只是我直接加到侧栏评、新、热、档、签里面有些杯具,单独用就正常,可能我用法不对吧

    50楼
  15. 侧栏显示最近更新文章 | SMILE BULL - pingback on 2011/08/05/ 15:40
    51楼
  16. 杀手时代 杀手时代 Google Chrome 12 Google Chrome 12 Windows XP Windows XP

    哈哈哈,发现你了~~这个博客真的很不错啊!!!

    52楼
  17. DaoFa DaoFa Firefox 7 Firefox 7 Windows 7 Windows 7

    请问:前面是($num=10,$days=7)
    调用是 recently_updated_posts(8,15); ?>
    好象是调用处不起作用,不知原因?

    53楼
    • zwwooooo zwwooooo Firefox 7 Firefox 7 Windows 7 Windows 7

      @DaoFa
      注意,这个带有缓存的,就是你文章更新了才会更新数据的。

  18. 276080758 276080758 Firefox 15 Firefox 15 Windows XP Windows XP

    你好,我使用这个代码后,在侧边能显示出来更新了的文章,但是无法点击...请帮我看看侧栏的最新文章

    54楼
    • zwwooooo zwwooooo Firefox 15 Firefox 15 Windows 7 Windows 7

      @276080758
      不太可能吧,生出来的是带链接的文章名,检查一下a标签的链接地址有木有吧

  19. 276080758 276080758 Firefox 15 Firefox 15 Windows XP Windows XP

    刚才看了下,结果把代码贴错了. 现在好了:mrgreen:

    还有,为什么置顶的文章一直在显示列表的最上面啊?

    55楼
    • zwwooooo zwwooooo Firefox 15 Firefox 15 Windows 7 Windows 7

      @276080758
      因为默认就是这样,写这代码时没考虑置顶文章,你可以给query_posts加多个参数:ignore_sticky_posts=1

    • 276080758 276080758 Firefox 15 Firefox 15 Windows XP Windows XP

      @zwwooooo
      OK了,感谢博主.

  20. 杂时代 杂时代 Google Chrome 22 Google Chrome 22 Windows XP Windows XP

    这个功能好实用啊!!!学习了!

    57楼
  21. loren loren Google Chrome 51 Google Chrome 51 Windows 10 Windows 10

    把function.php和侧边栏代码里面的数字改成3篇、15天,结果还是显示8天。我缓存插件都关了,也直接rm -rf删除了缓存目录,还是不行。晕掉了

    58楼
    • zwwooooo zwwooooo Vivaldi 1 Vivaldi 1 Windows 10 Windows 10

      @loren 按道理没问题,我这一直用着。你注意下日期,15天的意思是最近15天你修改过的老文章,不是发布日期,是修改日期

Leave a Reply