北极寒流 » 网络资源 » wordpress相关文章最新代码分享 - 2014.07.30

wordpress相关文章最新代码分享

先说说实现wordpress相关文章的思路,今天给大家分享的wordpress相关文章是基于相关性:标签(tag)相关+分类(category)相关来实现的,最后如果数量不够,在补充几篇随机日志。是wordpress相关文章代码强力版的升级版。

<?php
$post_id = get_the_ID();
$cat_arr = array();
$cats = get_the_category();
foreach($cats as $cat){
	$cat_arr[] = $cat->cat_ID;
}
$tag_arr = array();
$tags = get_the_tags();
if($tags)foreach($tags as $tag){
	$tag_arr[] = $tag->term_id;
}
if(empty($tag_arr)){
	$tag_arr[0] = '不可能有的标签_'.COOKIEHASH;
}
query_posts(array(
	'posts_per_page' => 6,
	'ignore_sticky_posts' => 1,
	'caller_get_posts' => 1,
	'orderby' => 'date', // 在下文中我建议使用rand,但其实随机列表并不利于seo
	'tag__in' => $tag_arr,
	'post__not_in' => array($post_id) // 排除本文本身
));
?>
<?php if(have_posts()) : // 如果通过标签找到了相关文章 ?>
	<div id="related_posts">
		<h3>相关文章</h3>
		<ul>
		<?php while(have_posts()):the_post(); ?>
	    	<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php echo mb_strimwidth(get_the_title(),0,42,'...'); ?></a></li>
	    	<?php endwhile; ?>
		<?php
		global $wp_query;
		if($wp_query->post_count < 6) : // 如果通过标签找到的文章不到6篇,你可以改为自己想要的篇数,一般可能会改为10
		query_posts(array(
			'posts_per_page' => (6 - $wp_query->post_count), // 这里就要找到6篇为总数的剩下篇数
			'ignore_sticky_posts' => 1,
			'caller_get_posts' => 1,
			'orderby' => 'date',
			'tag__not_in' => $tag_arr, // 因为前面已经找到了标签相关的文章,所以这里要排除
			'category__in' => $cat_arr, // 用相同的分类找相关文章
			'post__not_in' => array($post_id) // 和前面一样,排除文章本身
		));
		?>
		<?php while(have_posts()):the_post(); ?>
	    	<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php echo mb_strimwidth(get_the_title(),0,42,'...'); ?></a></li>
	    	<?php endwhile; ?>                 <?php endif; ?>
		</ul>
	</div>
<?php else : // 第一次通过标签没有找到相关文章的话,就要往下执行 ?>
	<?php query_posts(array(
		'posts_per_page' => 6,
		'ignore_sticky_posts' => 1,
		'caller_get_posts' => 1,
		'orderby' => 'date',
		'category__in' => $cat_arr, // 如果没有通过标签找到相关文章,就直接使用分类来找相关文章
		'post__not_in' => array($post_id)
	)); ?>
	<?php if(have_posts()): ?>
	<div id="related_posts">
		<h3>相关文章</h3>
		<ul>
		<?php while(have_posts()):the_post(); ?>
	    	<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php echo mb_strimwidth(get_the_title(),0,42,'...'); ?></a></li>
	    	<?php endwhile; ?>
		</ul>
	</div>
	<?php endif; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>

资料来源:http://www.utubon.com/post/391/wordpress-relate-posts.html

30

wordpress相关文章最新代码分享

分享到:

最受欢迎的