在使用 WordPress 建站过程中,为了使得整个网站得页面更加丰富,或者使网站具有更强的用户粘度,我们通常会需要在页面展示一些随机文章,这样也可以使得文章的 pv 得到提升。 (查看 WordPress 获取随机文章 (插件版本))
WordPress 获取随机文章方法无法两种:
WordPress 教程网比较推崇自己写代码,大家都知道插件过多必然影响到网站得性能。
方法一:自己编写代码
1 、在你的主题 functions.php 文件添加如下代码:
/** * WordPress 教程网 (wpnoob.cn) * 随机文章 */ function random_posts($posts_num=5,$before='<li>',$after='</li>'){ global $wpdb; $sql = "SELECT ID, post_title,guid FROM $wpdb->posts WHERE post_status = 'publish' "; $sql .= "AND post_title != '' "; $sql .= "AND post_password ='' "; $sql .= "AND post_type = 'post' "; $sql .= "ORDER BY RAND() LIMIT 0 , $posts_num "; $randposts = $wpdb->get_results($sql); $output = ''; foreach ($randposts as $randpost) { $post_title = stripslashes($randpost->post_title); $permalink = get_permalink($randpost->ID); $output .= $before.'<a href="' . $permalink . '" rel="bookmark" title="'; $output .= $post_title . '">' . $post_title . '</a>'; $output .= $after; } echo $output; }
在需要显示的地方调用如下代码
<div > <h3> 我猜你喜欢</h3> <ul> <?php random_posts(); ?> </ul> </div><!-- 随机文章 -->
很简单吧!!!何必用啥插件哈!!
方法二:代码最简单的方法
在需要显示随机文章地方添加如下代码:
<ul> <?php $rand_posts = get_posts('numberposts=5&orderby=rand'); foreach( $rand_posts as $post ) : ?> <li> <a href="<?php%20the_permalink();%20?>"><?php the_title(); ?></a> </li> <?php endforeach; ?> </ul>
这个方法虽然简单,但用到了 get_posts,如果将代码放在子页模板里,在他之后的代码,比如如果在后面同时调用了当前文章的评论,那评论内容很可能,出现的是最后一个随机到的文章的评论,而非当前文章的评论。
方法三:用 query_posts 生成随机文章列表
在需要显示随机文章地方添加如下代码:
<?php query_posts(array('orderby' => 'rand', 'showposts' => 2)); if (have_posts()) : while (have_posts()) : the_post();?> <a href="<?php%20the_permalink()%20?>" rel="bookmark" title=<?php the_title(); ?>"><?php the_title(); ?></a> <?php comments_number(", '(1)', '(%)'); ?> <?php endwhile;endif; ?>
方法四:在随机文章中显示标题和文章摘要
在需要显示随机文章地方添加如下代码:
<?php query_posts(array('orderby' => 'rand', 'showposts' => 1)); if (have_posts()) : while (have_posts()) : the_post(); the_title(); //这行去掉就不显示标题 the_excerpt(); //去掉这个就不显示摘要了 endwhile; endif; ?>
方法总结:
除了我再用的第一种方法,其他三种方法中都使用到了,get_posts 、 the_post 等方法,这些方法破坏页面中记录的当前文章的信息,如果使用在页面的最后部分,影响不大,如果在调用的代码后面还有评论等内容,则会导致评论内容调用的是随机到的最后一篇文章的评论。