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天内发表的文章除外

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

zww
or
oooo

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

115 comments

  1. 野草博客 野草博客

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

    沙发
  2. zwwooooo zwwooooo

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

  3. 野草博客 野草博客

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

  4. ......
  5. 奚少 奚少

    嗯,这个很有必要的~~

    41楼
  6. zwuu zwuu

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

    42楼
  7. sprityaoyao sprityaoyao

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

    43楼
  8. 囧啊囧 囧啊囧

    马上去测试下 :mrgreen:

    44楼
  9. 囧啊囧 囧啊囧

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

    45楼
  10. 倡萌 倡萌

    很不错的功能,支持大叔

    46楼
  11. Punkhippie Punkhippie

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

    zBench WordPress Theme

    » 修改时间: 2011.07.24 0:02

    47楼
  12. 郑永 郑永

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

    48楼
  13. 求索阁 求索阁

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

    49楼
  14. smilebull smilebull

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

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

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

    52楼
  17. DaoFa DaoFa

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

    53楼
    • zwwooooo zwwooooo

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

  18. 276080758 276080758

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

    54楼
    • zwwooooo zwwooooo

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

  19. 276080758 276080758

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

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

    55楼
    • zwwooooo zwwooooo

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

    • 276080758 276080758

      @zwwooooo
      OK了,感谢博主.

  20. 杂时代 杂时代

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

    57楼
  21. loren loren

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

    58楼
    • zwwooooo zwwooooo

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

Leave a Reply