在博客的文章页面添加随机文章,不只能够加强用户粘度,还能够把一些陈芝麻烂谷子的文章给时不时的翻出来,不至于沉下去。除了这下,还有一个更重要的做用,那就是当搜索引擎来爬你的文章的时候,每次都会有变化,同时还能增长文章内链。如:优搜网php
关于如何在wordpress添加随机文章,办法无非两种,1、使用插件;2、本身写代码。
html
关于插件,有不少不少,如中文工具箱、Random Pages Widget等等,对不想折腾代码的同窗不失为不错的方法,简单省事,使用容易,最大的问题就是插件多了会影响一点点速度。sql
而对我这个崇尚无插件解决方案的人来讲,我更但愿能使用代码来解决,一来代码效率高,二来灵活性强。而我发现关于wordpress随机文章的代码实现也很是简单,我找到的一共有四种实现方法。dom
在function.php中加入以下方法wordpress
/** * 随机文章 */ 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 class="right"> <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 the_permalink(); ?>"><?php the_title(); ?></a> </li> <?php endforeach; ?> </ul>
这个方法虽然简单,但用到了get_posts,若是将代码放在子页模板里,在他以后的代码,好比若是在后面同时调用了当前文章的评论,那评论内容极可能,出现的是最后一个随机到的文章的评论,而非当前文章的评论。post
在须要显示的地方直接调用以下代码ui
<?php query_posts(array(‘orderby’ => ‘rand’, ‘showposts’ => 2)); if (have_posts()) : while (have_posts()) : the_post();?> <a href=”<?php the_permalink() ?>” 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等方法,这些方法破坏页面中记录的当前文章的信息,若是使用在页面的最后部分,影响不大,若是在调用的代码后面还有评论等内容,则会致使评论内容调用的是随机到的最后一篇文章的评论。插件