hello
侠客
侠客
  • UID3
  • 粉丝1
  • 关注1
  • 发帖数27
阅读:4311回复:0

wordpress随机文章,可放于任意位置

楼主#
更多 发布于:2013-05-28 20:44
分享到:
在博客的文章页面添加随机文章,不仅可以增强用户粘度,还可以把一些陈芝麻烂谷子的文章给时不时的翻出来,不至于沉下去。除了这下,还有一个更重要的作用,那就是当搜索引擎来爬你的文章的时候,每次都会有变化,同时还能增加文章内链。

关于如何在wordpress添加随机文章,办法无非两种,一、使用插件;二、自己写代码。
关于插件,有很多很多,如中文工具箱、Random Pages Widget等等,对不想折腾代码的同学不失为不错的方法,简单省事,使用容易,最大的问题就是插件多了会影响一点点速度。
而对我这个崇尚无插件解决方案的人来说,我更希望能使用代码来解决,一来代码效率高,二来灵活性强。而我发现关于wordpress随机文章的代码实现也非常简单,我找到的一共有四种实现方法。
我自己现在用的方法
在function.php中加入如下方法


  1. /**
  2. * 随机文章
  3. */
  4. function random_posts($posts_num=5,$before='<li>',$after='</li>'){
  5.        global $wpdb;
  6.        $sql = "SELECT ID, post_title,guid
  7.                        FROM $wpdb->posts
  8.                        WHERE post_status = 'publish' ";
  9.        $sql .= "AND post_title != '' ";
  10.        $sql .= "AND post_password ='' ";
  11.        $sql .= "AND post_type = 'post' ";
  12.        $sql .= "ORDER BY RAND() LIMIT 0 , $posts_num ";
  13.        $randposts = $wpdb->get_results($sql);
  14.        $output = '';
  15.        foreach ($randposts as $randpost) {
  16.                $post_title = stripslashes($randpost->post_title);
  17.                $permalink = get_permalink($randpost->ID);
  18.                $output .= $before.'<a href="'
  19.                        . $permalink . '"  rel="bookmark" title="';
  20.                $output .= $post_title . '">' . $post_title . '</a>';
  21.                $output .= $after;
  22.        }
  23.        echo $output;
  24. }
复制代码
在需要显示的地方调用如下代码


  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>
  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; ?>
复制代码

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

返回顶部