wordpress获取随机文章方法总结


在使用wordpress建站过程中,为了使得整个网站得页面更加丰富,或者使网站具有更强的用户粘度,我们通常会需要在页面展示一些随机文章,这样也可以使得文章的pv得到提升。(查看wordpress获取随机文章(插件版本))
wordpress获取随机文章方法无法两种:

  • 一、使用插件(例如:Random Pages Widget);
  • 二、自己写代码。

wordpress教程网比较推崇自己写代码,大家都知道插件过多必然影响到网站得性能。

wordpress获取随机文章方法

方法一:自己编写代码
1、在你的主题functions.php文件添加如下代码:

  1. /**
  2. * wordpress教程网(shouce.ren)
  3. * 随机文章
  4. */
  5. function random_posts($posts_num=5,$before='<li>',$after='</li>'){
  6. global $wpdb;
  7. $sql = "SELECT ID, post_title,guid
  8. FROM $wpdb->posts
  9. WHERE post_status = 'publish' ";
  10. $sql .= "AND post_title != '' ";
  11. $sql .= "AND post_password ='' ";
  12. $sql .= "AND post_type = 'post' ";
  13. $sql .= "ORDER BY RAND() LIMIT 0 , $posts_num ";
  14. $randposts = $wpdb->get_results($sql);
  15. $output = '';
  16. foreach ($randposts as $randpost) {
  17. $post_title = stripslashes($randpost->post_title);
  18. $permalink = get_permalink($randpost->ID);
  19. $output .= $before.'<a href="'
  20. . $permalink . '" rel="bookmark" title="';
  21. $output .= $post_title . '">' . $post_title . '</a>';
  22. $output .= $after;
  23. }
  24. echo $output;
  25. }

在需要显示的地方调用如下代码

  1. <div class="right">
  2. <h3>我猜你喜欢</h3>
  3. <ul>
  4. <?php random_posts(); ?>
  5. </ul>
  6. </div><!-- 随机文章 -->

很简单吧!!!何必用啥插件哈!!

方法二:代码最简单的方法
在需要显示随机文章地方添加如下代码:

  1. <ul>
  2. <?php $rand_posts = get_posts('numberposts=5&orderby=rand');
  3. foreach( $rand_posts as $post ) : ?>
  4. <li>
  5. <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
  6. </li>
  7. <?php endforeach; ?>
  8. </ul>

这个方法虽然简单,但用到了get_posts,如果将代码放在子页模板里,在他之后的代码,比如如果在后面同时调用了当前文章的评论,那评论内容很可能,出现的是最后一个随机到的文章的评论,而非当前文章的评论。

方法三:用query_posts生成随机文章列表
在需要显示随机文章地方添加如下代码:

  1. <?php
  2. query_posts(array('orderby' => 'rand', 'showposts' => 2));
  3. if (have_posts()) :
  4. while (have_posts()) : the_post();?>
  5. <a href="<?php the_permalink() ?>"
  6. rel="bookmark"
  7. title=<?php the_title(); ?>"><?php the_title(); ?></a>&nbsp;
  8. <?php comments_number(", '(1)', '(%)'); ?>
  9. <?php endwhile;endif; ?>

方法四:在随机文章中显示标题和文章摘要
在需要显示随机文章地方添加如下代码:

  1. <?php
  2. query_posts(array('orderby' => 'rand', 'showposts' => 1));
  3. if (have_posts()) :
  4. while (have_posts()) : the_post();
  5. the_title(); //这行去掉就不显示标题
  6. the_excerpt(); //去掉这个就不显示摘要了
  7. endwhile;
  8. endif;
  9. ?>

方法总结:
除了我再用的第一种方法,其他三种方法中都使用到了,get_posts、the_post等方法,这些方法破坏页面中记录的当前文章的信息,如果使用在页面的最后部分,影响不大,如果在调用的代码后面还有评论等内容,则会导致评论内容调用的是随机到的最后一篇文章的评论。