一个月前,应该是吧,记不清了,a.shun 就跟我说过 willin 的相关代码有问题,老是出现当前文章本身,因为忙我就一直没去分析代码。
直到昨晚,我在回复评论时看到自己博客的相关文章才突然想起,于是分析了代码一下,a.shun 所说的问题很容易解决,就是去掉下面 willin 相关文章代码里面第 5 行的注释即可——即去掉前面的 2 条斜杠。
如下面 willin 相关文章原代码(提取自 A9 主题),把下面的 //$exclude_id = $post->ID; // 單獨使用要開此行
改为 $exclude_id = $post->ID; // 單獨使用要開此行
<h3>Related Posts</h3> <ul> <?php $post_num = 5; // 數量設定. //$exclude_id = $post->ID; // 單獨使用要開此行 $posttags = get_the_tags(); $i = 0; if ( $posttags ) { $tags = ''; foreach ( $posttags as $tag ) $tags .= $tag->name . ','; $args = array( 'post_status' => 'publish', 'tag_slug__in' => explode(',', $tags), // 只選 tags 的文章. 'post__not_in' => explode(',', $exclude_id), // 排除已出現過的文章. 'caller_get_posts' => 1, // 排除置頂文章. 'orderby' => 'comment_date', // 依評論日期排序. 'posts_per_page' => $post_num ); query_posts($args); // query_posts() since 2.0.0 /wp-includes/classes.php while( have_posts() ) { the_post(); ?> <li>♥ <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php $exclude_id .= ',' . $post->ID; $i ++; } wp_reset_query(); } if ( $i < $post_num ) { // 當 tags 文章數量不足, 再取 category 補足. $cats = ''; foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ','; $args = array( 'category__in' => explode(',', $cats), // 只選 category 的文章. 'post__not_in' => explode(',', $exclude_id), 'caller_get_posts' => 1, 'orderby' => 'comment_date', 'posts_per_page' => $post_num - $i ); query_posts($args); while( have_posts() ) { the_post(); ?> <li>♥ <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php $i ++; } wp_reset_query(); } if ( $i == 0 ) echo '<li>尚無相關文章</li>'; ?> </ul>
本来这样就解决了,但随即 a.shun 又发现貌似我博客的都是取得同分类的文章,而不是先取得同标签的文章。
于是我又重新分析代码,发现我的博客文章中文标签名的取不到相关文章,但英文标签的文章就能取到相关文章,看来代码问题出在标签(tag)的获取上。
经过细心发现,willin 忘了考虑中文博客很多标签名和标签的别名(slug)是不同的,而代码取得的是当前文章的标签名,而获取相关文章的代码用的是别名(slug),所以才会出现有些标签的文章不能获取相关文章。(这段很拗口。。。看得懂的看看,看不懂就飘吧。)
下面是我纠正后的代码,具体效果看我博客文章后面的相关文章。
(2010.11.30 Update: 漏了个$i++和忘了去掉文章标题截取,请Copy过[2010.11.30前]的朋友重新Copy)
<h3>Related Posts</h3> <ul> <?php $post_num = 5; // 數量設定. $exclude_id = $post->ID; // 單獨使用要開此行 //zww: edit $posttags = get_the_tags(); $i = 0; if ( $posttags ) { $tags = ''; foreach ( $posttags as $tag ) $tags .= $tag->term_id . ','; //zww: edit $args = array( 'post_status' => 'publish', 'tag__in' => explode(',', $tags), // 只選 tags 的文章. //zww: edit 'post__not_in' => explode(',', $exclude_id), // 排除已出現過的文章. 'caller_get_posts' => 1, 'orderby' => 'comment_date', // 依評論日期排序. 'posts_per_page' => $post_num ); query_posts($args); while( have_posts() ) { the_post(); ?> <li><a rel="bookmark" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li> <?php $exclude_id .= ',' . $post->ID; $i ++; } wp_reset_query(); } if ( $i < $post_num ) { // 當 tags 文章數量不足, 再取 category 補足. $cats = ''; foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ','; $args = array( 'category__in' => explode(',', $cats), // 只選 category 的文章. 'post__not_in' => explode(',', $exclude_id), 'caller_get_posts' => 1, 'orderby' => 'comment_date', 'posts_per_page' => $post_num - $i ); query_posts($args); while( have_posts() ) { the_post(); ?> <li><a rel="bookmark" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php $i++; } wp_reset_query(); } if ( $i == 0 ) echo '<li>没有相关文章!</li>'; ?> </ul>
有用这段代码的朋友自己纠正吧,willin 那里我也通知了,不过他退隐“博湖”好一段时间了,期待他的复出。
zww
赏
oooo
or
- 本文标题:willin相关文章代码修正
- 本文链接:https://zww.me/archives/25353
- 发布时间:2010年11月29日 10:18
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
我啥也不懂,我就看看。。。
@一世年华
荒淫围观
你这里就是一些代码库 以后能用到 就搜索过来了
@丕子
回复自己可以?
@丕子
没这么厉害吧,呵呵
@丕子
wp是可以的
建站小菜鸟,各种来学习~~
@creolophis
荒淫常来
今天正过来找这段代码呢,没想到还碰上更新了~
@Leo.N
厄,你又好久没更新博客了。。。
偶用的 是 水煮鱼 的 相关文章 的 插件、、我也去 换个 玩玩~
@Kars
插件的话有很多
用的还行吧,不过样式太单调,我现在的话自己加了一个背景,感觉还不错,不知大神什么意见?
@苏扬
样式自己折腾去,这里只说代码。
@苏扬
加了那个背景明朗多了,所以群众的力量是很厉害的。
好东西!!~~但是我没用这个代码``
@heson
用时再cp
没用到这个代码,用的插件。
@囧啊囧
插件简单好用,哈
没看懂,到底是啥子意思!!?
@Tiger
那就飘吧
我再给你加一条评论吧,不要回复得手酸呀
代码高亮还是很美观!
@不羡鱼
这。。。如果一天回复2次就不会,如果一天没回复,第二天就手酸了
代码收了
这个好啊... 我也很想搞一个. 我把你这个收藏了.
@搓板
CP就行了
@zwwooooo
等我把我的top10搞定 我试试.
@搓板
貌似还没搞好
@zwwooooo
貌似复制进去 只有最新的文章. 只显示5篇.
@搓板
你复制到哪里啊?这个是文章页面用的。
@zwwooooo
我以为是sidebar呢. 汗....
我现在试试.
@搓板
sidebar也可以,就是只让它在single页面显示就行了,呵呵
@搓板
哦,可能要稍微修改,还是文章里面吧,哈
等我学会了代码再来烟酒。
到现在我都还没把相关内容弄上去。用TAG,有些我根本没设置TAG,都空的。
@第六空间
空的会自动用分类补足
收藏下,留着以后用
$tag->term_id ╮(╯▽╰)╭。。。。。突然忘记想说啥了 - -
@小邪
。。。
我总是喜欢z大的修改版,nice
@socekin
荒淫CP使用
相关文章,这是一段很有用的代码。
@wmtimes
对啊
你也是大师。
@小王子
Copy大湿。。。
厉害,我暂时不想折腾