版权声明: 转载时请以超链接形式标明文章原始出处和作者信息
本文来自: Domety»《WordPress添加“随机文章”模块》
本文链接: http://domety.com/archives/139/
本文作者: DDBug
发表时期: 2009-11-05
自从wordpress 2.5 之后,wordpress增加了一些功能,其中就包括显示随机文章,使用起来也很方便,看代码
<ul>
<?php query_posts('showposts=5&orderby=rand'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; endif; ?>
</ul>
这段代码的功能就是以列表的形式随机显示5篇文章的标题。其实就是调用了query_posts()函数来自定义我们的查询语句,其中showposts参数决定文章数量,orderby决定显示顺序,我们让orderby=rand就可以实现随机的效果。
使用这种方法有些问题需要注意,query_posts覆盖了原始的查询语句,不能把这段代码插入到其它的循环中。如果你对wordpress的循环机制不是很了解,使用这种方法就需要谨慎。在进行多循环查询的时候,这种方法可能会影响到其它查询。
为了解决可能对其它循环体的影响,我们可以在查询随机文章之前先备份一下原始原始查询语句,然后再复原,代码如下:
<ul>
<?php $temp_query = clone $wp_query; ?>
<?php query_posts('showposts=5&orderby=rand'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; endif; ?>
<?php $wp_query = clone $temp_query; ?>
</ul>
在这段代码中,我们首先把原始的查询变量$wp_query复制给临时变量$temp_query。当我们在进行随机查询的时候,全局变量$wp_query已经改变。在循环结束之后,再把之前保存的$temp_query复制给$wp_query,此时$wp_query就仍然是先前的原始查询语句了。
另外一种方法是新建一个查询变量,这样就不会覆盖原始的查询变量$wp_query。具体代码如下:
<ul>
<?php $rand_query = new WP_Query('showposts=5&orderby=rand'); ?>
<?php if ($rand_query->have_posts()) : while ($rand_query->have_posts()) : $rand_query->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; endif; ?>
</ul>
在这段代码中,我们首先定义了一个新的查询变量$rand_query,之后的循环语句也是对$rand_query的操作,这样就不会影响到全局变量$wp_query。
我个人比较倾向于最后这种方法,因为这段代码是完全独立的,你可以把它放在任何你需要的地方,不会对其它循环产生影响。
为了方便大家使用,我写了一个函数:
function the_rand_posts($postsNum = 10){
$rand_query = new WP_Query("showposts=$postsNum&orderby=rand");
if($rand_query->have_posts()){
echo '<ul>';
while($rand_query->have_posts()){
$rand_query->the_post();
echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
}/*End while($rand_query->have_posts())*/
echo '</ul>';
}/*End if($rand_query->have_posts())*/
}
你只需要把这段代码复制到你正在使用的主题文件夹下的functions.php中,然后在任何你需要显示随机文章的地方加入下面这句代码即可:
<?php the_rand_posts(); ?>
这样就会显示10篇随机文章标题,如果你只想显示5篇,可以这样调用:
<?php the_rand_posts(5); ?>
好了,今天DDBug就为你介绍到这里,如果有任何疑问,可以留言。同时欢迎各方英雄来讨论相关话题。
孕妇网
2009-12-25 星期五 20:36
DDBug
2009-12-25 星期五 20:43
孕妇网
2009-12-25 星期五 20:46
孕妇网
2009-12-25 星期五 20:48