A-A+

wordpress不用插件调用随机文章,兼容inove系列主题

本文于2012年04月22日最后更新 博客心得

在博客的文章页面添加随机文章,不仅可以增强用户粘度,还可以把一些以前的的文章给时不时的翻出来,不至于沉下去。除了这个,还有一个更重要的作用,那就是当搜索引擎来爬你的文章的时候,每次都会有变化,同时还能增加文章内链。这个对seo优化很有作用呀!

关于如何在wordpress添加随机文章,办法无非两种,

一、使用插件;

二、自己写代码。

首先:关于插件,有很多很多,如中文工具箱、Random Pages Widget等等,对看到代码就头疼的朋友们不妨用一下,简单省事,使用容易,最大的问题就是插件多了会影响一点点速度。
而对张自然这个喜欢研究无插件解决方案的人来说,(注:张自然原先也是个看到代码就头疼的人,经过不断的成长,现在我更喜欢研究代码了)更希望能使用代码来解决,一来代码效率高,二来灵活性强。而我发现关于wordpress随机文章的代码实现也非常简单,我找到的一共有四种实现方法。

方法一:代码最简单的方法

在需要显示的地方直接调用如下代码(张自然现在就用这种方法,经张自然修改后,兼容inove系列主题)

<li class="widget widget_numberposts">
<h3>随遍看看吧</h3>
<ul>
<?php $rand_posts = get_posts('numberposts=8&orderby=rand');
foreach( $rand_posts as $post ) : ?>
<li>
<a target="_blank" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach; ?>
</ul>

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

方法二:在随机文章中显示标题和文章摘要

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

<?php
query_posts(array(‘orderby’ => ‘rand’, ‘showposts’ => 1));
if (have_posts()) :
while (have_posts()) : the_post();
the_title(); //这行去掉就不显示标题
the_excerpt(); //去掉这个就不显示摘要了
endwhile;
endif; ?>

方法三:用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>&nbsp;
	<?php comments_number(”, ‘(1)’, ‘(%)’); ?>
<?php endwhile;endif; ?>

方法四:在function.php中加入如下代码

在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>
	<h3>随便找点看看!</h3>
	<ul>
		<?php random_posts(); ?>
	</ul>
</div><!-- 随机文章 -->

不复杂吧,以上代码不依赖也不影响其他代码。

  1. 天一角大学生软件学习网

    改代码还没试过

给张自然个人博客留言