成航先森 成航先森

成都航院计算机系一个学生的个人记录

 

WordPress技巧

最新文章

WordPress技巧
当前位置: 首页 » 建站分享 » WordPress技巧 » WordPress相关文章调取方式变为同标签文章随机显示

WordPress相关文章调取方式变为同标签文章随机显示

编辑:狂族晨曦 来源:WordPress技巧 日期:2016-03-09 阅读: 2,216 次 抢个沙发 百度已收录

先森现在闲来无事就折腾网站,还在想着怎么给文章图片加水印等系列问题,又想到前几天把标签页的文章缩略图用上了七牛缩略图,使文章加载时的图片体积减小了很多,同理可以把每篇文章下的相关文章的缩略图也用上。关于文章的缩略图,大家可以看看:

继续上文,先森按照同样的方法后,发现每篇文章下面的相关文章,竟然都是一样的,这让先森大吃一惊:

相关文章 -1

文章1下面的相关文章

相关文章 -2

文章1下面的相关文章

解释一下,先森用的相关文章的代码,是倡萌在WordPress大学上分享的:

先森想要实现的情况是,显示本篇文章同一个标签下的随机5篇文章。这本来是很简单的一件事,但是先森还是绕了很大的弯子。先森把倡萌提供的代码一句一句的研究,重点是有时候还跳着,最后发现刚好把重要部分跳过了。但其实还是有好处的,就是让先森对WordPress的代码理解的更多了。

下面先森把倡萌提供的代码经过先森注解后的代码贴出来:

<h3 class="related_articles"><span>相关文章</span></h3>
<ul class="related_img">
<?php
$post_num = 5;  //显示文章数量
$exclude_id = $post->ID;   //获取当前文章的ID
$posttags = get_the_tags();  //get_the_tags()递交给$posttags当前文章所以标签的名称
$i = 0;
if ( $posttags ) {
	$tags = '';
	foreach ( $posttags as $tag ) $tags .= $tag->term_id . ',';  //分别将$posttags中标签的名词递交给$tag,然后将获取到的标签ID递交给$tags
	$args = array(
		'post_status' => 'publish',
		'tag__in' => explode(',', $tags),    //包括的标签
		'post__not_in' => explode(',', $exclude_id),    //不包括当前文章
		'caller_get_posts' => 1,   //排除返回的文章上方的置顶文章
		'orderby' => 'rand',   //rand:随机排序;
		'posts_per_page' => $post_num   //显示相关文章数量
	);
	query_posts($args);
	while( have_posts() ) { the_post(); ?>
		<li class="related_box"  >
		<div class="r_pic">
		<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank">
		<img src="<?php echo post_thumbnail_src(); ?>?imageView2/1/w/130/h/100/q/100" alt="<?php the_title(); ?>" class="thumbnail" />
		</a> 
		</div>
		<div class="r_title"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank" rel="bookmark"><?php the_title(); ?></a></div>
		</li>
	<?php
		$exclude_id .= ',' . $post->ID; $i ++;
	} wp_reset_query();
}
if ( $i < $post_num ) {
	$cats = ''; foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ',';//为$cats赋值分类ID
	$args = array(
		'category__in' => explode(',', $cats),
		'post__not_in' => explode(',', $exclude_id),
		'caller_get_posts' => 1,
		'orderby' => 'rand',   //随机排序
		'posts_per_page' => $post_num - $i
	);
	query_posts($args);
	while( have_posts() ) { the_post(); ?>
	<li class="related_box"  >
		<div class="r_pic">
		<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank">
		<img src="<?php echo post_thumbnail_src(); ?>" alt="<?php the_title(); ?>" class="thumbnail" />
		</a>
		</div>
		<div class="r_title"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank" rel="bookmark"><?php the_title(); ?></a></div>
	</li>
	<?php $i++;
	} wp_reset_query();
}
if ( $i  == 0 )  echo '<div class="r_title">没有相关文章!</div>';
?>
</ul>

当然,有些改动,是为了适应本站,大家可以结合着原文看。上面这么长一堆,实现了随机的部分其实很简单,重点在于第17行:

'orderby' => 'rand',

“orderby”是选择排序的方式,先森写的是“rand”,倡萌分享出来的是选择“comment_date”。下面解释一下“orderby”的所有参数:

  • orderby=date 按发布日期排序

  • orderby=modified 按修改时间排序

  • orderby=ID 按文章ID排序

  • orderby=comment_count 按评论最多排序

  • orderby=title 按标题排序

  • orderby=rand 随机排序

所以这里选择“rand”就能满足先森的要求了。更改后到文章中一刷新,看到果然不一样了:

变为随机显示的相关文章 -3

变为随机显示的相关文章

以上就是先森摸索的过程,希望能够给大家提供一个参考。

历史上的今天:

标签:
除特别注明外,本站所有文章均为成航先森 www.capjsj.cn 原创,本文共3008个字
转载请注明出处来自https://www.capjsj.cn/wp_xgwzdqfsbwtbqwzsjxs.html
已有 0 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论
的头像
欢迎发表评论
取消评论

表情
疑问调皮伤心抠鼻黑线微笑可爱奸笑震惊吓到了撇嘴大兵忍不住笑笑狂骂狂怒噢?鼓掌酷⊙﹏⊙b汗鄙视大哭嘿嘿

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
官方微信
发表评论 返回顶部