Yskin's Latest Posts——WordPress最新文章插件

昨天和今天研究了一下K2自带的SBM,把我的sidebar改用SBM来控制。改到最新文章时,发现K2自带的latest posts模块和K2的sidebar.php文件里的代码不一样。sidebar.php里只有一条语句:wp_get_archives('type=postbypost&limit=10');,latest posts模块里却用了

$latest = new WP_Query($query);
foreach ($latest->posts as $post)
{setup_postdata($post); echo ...}

联想到几天前alonefly大大提到的模板中的判定问题,去查了一下hoofei4模版。hoofei4用的是:

<?php query_posts('showposts=10');
if (have_posts()) : while (have_posts()) : the_post();
echo ...
endwhile; endif; ?>

hoofei4模版里这样用显然会导致之后的代码无法判断当前页面类型,is_home()之类的函数返回值已经不正确了,无论什么页面,在此代码之后的is_home()函数都会返回true。别的不说,hoofei4模版sidebar里定义链接列表和meta为只在首页和page页显示,可是http://www.hoofei.com/网站里所有的页面,包括文章页存档页都会显示这两样。

我特意在我的Blog上做了测试,hoofei4模版的用法会影响is_home()等函数的判断,而latest posts模块的用法却不会,可能是因为新建了一个WP_Query对象的缘故吧。不过,setup_postdata()函数还是会影响几个全局变量,而且执行速度也较慢。

不知道这样的代码是从哪里来的,谁最先想出来的。可以肯定的是,他是一个高手,懂得用query_posts()函数,但是,他却不知道WordPress提供了最新文章功能,只要调用一个函数即可。呃,我推测,可能是以前WP 1.5或者1.2的时代里,WordPress还没有提供这个函数,所以有人写了这样的代码,后来被人抄来抄去,就流传到了现在。

不过,WordPress自带的还是不能满足我的要求,我想显示的不是最新发布的文章,而是最新修改的文章。7月12号,我从wp-includes\template-functions-general.php中的wp_get_archives()函数里抄了一段代码,修改为显示最新修改的10篇文章,放在sidebar.php里。现在,我又把它改了一下,做成最新文章插件,并提供对SBM的支持。

这年头是不是每个WordPress插件作者都要写一个自己的最新文章插件和最新评论插件啊?嘿嘿。

请移步到“Yskin's Latest Post”主页下载软件并查看更多信息。

本文共有 5 条评论Yskin's Latest Posts——WordPress最新文章插件


  1. 1 Allen

    那么如何避免它调用显示那些通过编辑时间戳以实现future publish的文章?

    另外请Yskin看看这两个留言
    http://yskin.net/2006/06/word-count.html#comment-5248
    http://yskin.net/2006/12/feed-control-plus-release.html#comment-5247

    1. 2 yskin

      插件只显示发布日期在当前时间之前的文章。

      BTW, WordPress 2.1里已经不需要进行这样的判断了,hoho

  2. 3 Michael

    这年头是不是每个WordPress插件作者都要写一个自己的最新文章插件和最新评论插件啊?嘿嘿。

    还真是,我才修改了一下 wordpress 中文工具箱里的最新评论函数,就看到你这儿才弄了个最新文章插件,呵呵,有意思。

  3. 4 酷辣客

    象这种在文章内插入代码的方法是什么插件,我用代码依然不成功。

  1. 1 WordPress分类顺序插件 - 乱塞网(luansay.cn)
    Pingback2007-3-24 5:37 上午

请留下您的评论: