从网上搜来的相关文章代码有个弊病,就是代码放在网页某些地方(如放在文章内容后面)会搞乱 $post 的顺序,从而会影响一些如评论调用错乱的问题,我也因为此而一直用插件来实现这个功能。
低调高手 willin 在其文章《A9 主题的特色》里面贴出了 A9 主题所用的相关文章代码,代码由 willin 一手打造,很好用。
这段代码有2个与众不同的地方:
1. 先取每个 tags 的文章,当 tags 文章数量不足, 再取 category 补足。
2. 使用 $post 暂存, 代码放在网页任何地方都不不会搞乱 $post 顺序。
使用方法很简单,直接将下面的代码复制到需要使用的地方即可:
<h3>相关文章:</h3> <ul> <?php $post_num = 5; // 设置相关文章数量. global $post; $tmp_post = $post; $tags = ''; $i = 0; // 先取 tags 文章. if ( get_the_tags( $post->ID ) ) { foreach ( get_the_tags( $post->ID ) as $tag ) $tags .= $tag->name . ','; $tags = strtr(rtrim($tags, ','), ' ', '-'); $myposts = get_posts('numberposts='.$post_num.'&tag='.$tags.'&exclude='.$post->ID); foreach($myposts as $post) { setup_postdata($post); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php $i += 1; } } if ( $i < $post_num ) { // tags 文章数量不足, 再取 category 补足. $post = $tmp_post; setup_postdata($post); $cats = ''; $post_num -= $i; foreach ( get_the_category( $post->ID ) as $cat ) $cats .= $cat->cat_ID . ','; $cats = strtr(rtrim($cats, ','), ' ', '-'); $myposts = get_posts('numberposts='.$post_num.'&category='.$cats.'&exclude='.$post->ID); foreach($myposts as $post) { setup_postdata($post); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php } } $post = $tmp_post; setup_postdata($post); ?> </ul>
贴完。
2010.6.6 Edit:
1. 评论中阿修和kisa747指出“如果文章没有标签那么会出错”,这个问题阿修在评论里给出临时解决办法(已添加进上面的代码)【willin 已经修正】
2. 由于 willin 的源代码贴出错误,致使相关文章变成最新文章,我已经修正。
请在 2010.6.6 13:33 前 CP(Copy Paste) 代码的朋友重新 CP 使用。
2010.11.29 Update: 最新的代码请移步此 https://zww.me/archives/25353
zww
赏
oooo
or
- 本文标题:willin的相关文章代码
- 本文链接:https://zww.me/archives/25166
- 发布时间:2010年06月05日 11:18
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
过来学习一下
我都是吓搞估
@zzzhu 玩玩有趣
我用Related Posts,基本上都显示随机文章,很少看到相关文章,不知道是什么原因
@Terry 呃,是不是文章相关度不够?
我把Related Posts插件取消了,也用来这个了。
可以试试。
willin和Z大依然那么细腻...
@MOPVHS 完全是willin的代码,我只是CP
这个不错的说!
思路蛮清晰的,虽然看不懂Php函数,但能看懂大致的意思!
@苏扬 我也不太懂php函数
我用的是simple tag里的这个功能
@睡到自然醒blog Simple tag很强大,但只是为了相关文章而使用就有点太大了
刚刚更新了下我的代码 确实这个强大 有了 还有分类作补充 ,比我原来的 要好 不会出现"无相关日志"了
@ifenwen 嗯嗯,这样很好
我考虑更换WP了!
@于泽鹏 很好啊,荒淫加入wp一起折腾
發現這裏也有, 而且是新的, 動作真快, 最要感謝你發現錯誤! 謝謝了!
@willin 哈,我只能对比出错误,对于php实在是不懂啊
没想到我成了你这的水王了...
@阿邙 水水更健康
之前用的相关文章代码没有分类补全的功能,先试验一下。
@一心而已 这个很不错
那又可以少用一个插件了..~~~
@超人 是啊,我的插件比较多
好东西
@诸葛草帽 荒淫使用
太高技术了吧,完全看不懂
这段代码有个缺点,除了single页会显示,page页也会显示。。。
@sketchupro设计
你不把代码放page模板怎么会显示呢?
不好意思,刷留言了,刚刚邮箱输错一个字母,头像没显示,嘿嘿~