自定义WordPress的相关文章函数(related_posts)

今天闲来无事,看到blog的文章内容页面有点单调,
决定写一个获取当前文章相关文章的模块,
看了WordPress文档,没有现成的函数,
看来只有自己写了。

思路:
思路比较简单,就是获取当前文章的所在分类的随机文章

下面直接看代码

下面的源文章是对应所用的主题文件,不同主题有差异

funcitons.php
在公用函数的源文件加上一个自定义related_posts函数

<?php 
// related posts
function related_posts(){
	global $post;
	$categories = get_the_category($post->ID);
	$cat_id = $categories[0]->term_id;
	$args = array( 'numberposts' => 10, 'offset'=> 1, 'orderby'=>'rand',  'category' => $cat_id );
	$myposts = get_posts( $args );
 
	$related_posts = '<div id="related-posts"><h4>Related Posts</h4><ul>';
	foreach( $myposts as $post ) {
		$related_posts .= '<li><a href="'.get_permalink($post->ID).'" title="'.$post->post_title.'">'.$post->post_title.'</a></li>';
	}
	$related_posts .= '</ul>';
	wp_reset_query(); 
	echo $related_posts;
}
 
?>

single.php
在单篇文章显示源文件加上这个函数
PS: 要放在显示文件内容之后。

<?php related_posts(); ?>

这样就大功告成了。当然,少不了要写样式来美化一下

style.css

/* related posts */
#related-posts {margin-top:10px;margin-bottom:10px; }
#related-posts h4 {font-size: 1.5em;font-weight: normal;padding: 0;display: block;margin-bottom: 5px;}
#related-posts ul {padding:10px 0;padding-left:25px;background-color:#f6f6f6;display:block; border-radius: 4px;-moz-border-radius: 4px;-webkit-border-radius: 4px;}
#related-posts ul li {list-style-type:square;}

显示效果如本页面所示