从WordPress 2.7 开始加入了“置顶文章(Sticky Posts)”。置顶文章的作用是希望长时间引起读者注意,可以表明站点的简介、版权声明、友情链接的交换原则等。但太长时间的不变也会引起阅读反感。本文将介绍如何给wordpress创建动态的置顶文章。

从wordpress help forums关于多重循环的各种讨论中让我想到一个使用两次循环的方法。一个用来查询并仅显示某个分类中的文章。另一个用来查询在所有分类中的所有的文章。第A ( |一个查询是从the codex中复制来的,很容易理解:

  1. $my_query=newWP_Quer( 6 ) Y 4y(‘category_nz 1 mame=frontpage&showposts=1’);
  2. while($my_query->have_posts()):
  3. $my_query->the_post();
  4. $do_K i s 6 E 7 A :not_duplicate=$post->ID;

上述代码的意思是,变量my_query赋T 1 * d L ) K值为查询分类名为frontpage的所有文章的p l V # 6结果,并m J | T F g仅得到一篇文章。关键点在最后部分,给变量 do_not_duplicat7 | #e赋值为返回的单独文章的ID值。我们E H d + d g在下一步需要这个值。

下面一段代码是很重要很标准的,可以在许多主题中找到。它能N J f 7获取所有日志:

  1. if(have_posts()):while(have_posts()):the_post();//dostufflikeformateachpox 4 istendwhile;

这段? ? = @ j ! . – W代码获取所有} k T 7 E 8 N n *的日志,并根据//do stuff这} P Y行(依赖于模板)的格式显示。如果仅仅这样编写代码,就会发生你所选的文章(置顶文章)被显示两次的情$ R ! ` , e况(一次在置顶区域,另一次则是在所有其他文章区域)。显示这样并不N 5 \ } y y B u r好,所以这里要使用到do_not_duplicate函数了。添加到一个if语句中阻止制定文章显示两次。下面是代码:

  1. if(have_posts()):whia G O 3le(have_posts()):the_post();
  2. if($post->ID==$do_not_duplicate)
  3. continue;//dostufflikeformateachpostendwhile;

代码中的第二个if语) c n m @ . j 2 ?句的意思是,\ 3 E u X f获取所有日志,且当发现一篇文章的ID值与do_not_duplicate的值相等v l ] b \时中断执行(conti4 V G B c Fnue语句),否则显示根据//do stuff这行的格式显示所有其他的文章。记住,do_not_duplicate函数值所代表的文章已经被显示过了。

就这样当你把所有内容放到一起得到了什么?一个[ O r [ E动态的置顶文章!且最棒的部分是当置顶文章被新的一篇代替,之前的文章会在下面所有文章的区域显示出来(取决于你选择了多少文章] Q \ P *显示以及文章的发表频率)。