在博客的文章页面添加随机文章,不仅可以增强用户粘度,还可以把一些陈芝麻烂谷子的文章给时不时的翻出来,不至于沉下去。除了这下,还有一个更重要的作用,那就是当搜索引擎来爬你的文章的时候,每次都会有变化,同时还能增加文章内链。
关于如何在wordpress添加随机文章,办法无非两种,一、使用插件;二、自己写代码。
关于插件,有很多很多,如中文工具箱、Random Pages Widget等等,对不想折腾代码的同学不失为不错的方法,简单省事,使用容易,最大的问题就是插件多了会影响一点点速度。
而对我这个崇尚无插件解决方案的人来说,我更希望能使用代码来解决,一来代码效率高,二来灵活性强。而我发现关于wordpress随机文章的代码实现也非常简单,我找到的一共有四种实现方法。
我自己现在用的方法
在function.php中加入如下方法
/** * 随机文章 */ 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,如果将代码放在子页模板里,在他之后的代码,比如如果在后面同时调用了当前文章的评论,那评论内容很可能,出现的是最后一个随机到的文章的评论,而非当前文章的评论。
方法三:用query_posts生成随机文章列表
在需要显示的地方直接调用如下代码
<?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等方法,这些方法破坏页面中记录的当前文章的信息,如果使用在页面的最后部分,影响不大,如果在调用的代码后面还有评论等内容,则会导致评论内容调用的是随机到的最后一篇文章的评论。
过来支持一下,呵呵
强烈希望知道怎么使用方法1,在下小白。很想使用。但是不知道该怎么做。
方法1有两段代码。第一段代码,该放到function.php的什么位置呢?是否闭合标志内?还是重新开在function.php开一个新的这样?
第二段代码,是放到任何想要显示的地方么?好比直接复制第二段代码到文章页或者widget html页面就可以显示?还是需要放到post等的php页面才可以呢?
等待楼主的指导。感激!
第一段代码是一个函数,放在function.php闭合标签内。第二段代码其中含有php代码,需要放在文章页,page、post等php的页面中。
博主,很奇怪的是我把方法四里的代码放于文章源码处,显示的是“‘rand’, ‘showposts’ => 1)); if (have_posts()) : while (have_posts()) : the_post(); the_title(); //这行去掉就不显示标题 the_excerpt(); //去掉这个就不显示摘要了 endwhile; endif; ?>” ,只有放在边栏里才行。不知何原因?望博主赐教!
您没仔细看文章,只有方法一是百无禁忌的,其他几个方法都有局限。
博主,非常的谢谢你的文章,我现在也是在学习使用wordpress,有很多的东西还不是很明白,现在也是在一点一点的学习中,以后可能会非常多的来到您的博客,希望能多多的看看您的文章,非常的受用,并且您的博客的模板非常的漂亮,好想知道是什么?冒昧的问一句,能否告知?希望以后能和博主多多的交流一下。
非常喜爱wordpress;求交往
好东西,不过不知道给那里个文件里安呢
不错!很实用的技巧,我也不太喜欢弄太多插件。多谢楼主。
方法很好的,刚好解决了,我的问题。你的主题很漂亮的,收藏了!
很好的文章 过来支持下
有没有简单一点的js代码!
我们以提升贵公司对网站建设方案满意度为宗旨,解决方案采用了以客户为中心的系统化方式来解决贵公司的网站建设服务问题。北京顺顺企业网站建设公司www.bjshunshun.com 北京网站建设www.300-cn.com 北京网站制作www.2012314.com 北京网站设计www.songjing100.com 网站建设
Pingback 引用通告: wordpress随机文章,可放于任意位置 - WordPress - 开发者
因为用了query_posts,所以还需要wp_reset_query
非常专业的讲解!谢谢你的分享。
用了第一个方法,但是没有任何显示。。。
第一种最安全,我以前用第二种,导致评论错位了。
代码不错,实现了效果了,请教博主,是否可以实现随机文章调用静态的文章页面呢?这样可以加快打开页面的速度,代码不怎么懂,特来请教
需要这个第一段的放置fun文件