从网上搜来的相关文章代码有个弊病,就是代码放在网页某些地方(如放在文章内容后面)会搞乱 $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 原创,转载请以链接形式标明本文地址!
也不知道自己用的谁的代码了
@ifenwen 以前网上流行的相关文章代码有bug,这是willin自己敲的代码。
我是都拿来参考,自己修改的合适
@winy 嗯嗯
拿来试试,感谢分享~
@Max Lee 荒淫使用
技术文MK~~
哇,IE6下评论框的位置和广告为有重叠哦!
@jalena 已修正,谢谢指出
我用的代码是直接从WordPress Related Posts中挖出来的
@A.shun 哈哈,其实都差不多
收藏一下.
发现个问题,如果文章没有标签,会报错的
@阿修 呃,我看看
14行开始后面多了一个?
@囧笑娱乐 哦,真是啊,我自个更正了,写文章时没更正。。。
是不是利用SQL也可以实现这样的效果呢?利用文章标题的相似度
@集趣 可以吧,但我不会
这个不错 呵呵 有没有合适的摘要代码分享下.
@阿邙 没啊,你可以参考插件,呵呵
感觉我现在用的还凑合 就不换了~
@疾风 好用即可
用了,不过每个文章前都有个?
好了,删除代码里2个问号就行了
@Dianso 嗯,willin那里贴错了,我自个用的更正了,但我发文章时又copy willin的了,囧~
看不懂代码啊,什么时候能步入你们高手的行列呢?这样提示点广告不怕百度处罚呀?
@猪八戒 你不说就可以了
这个代码自动补足分类下的文章比较好。
@kisa747 嗯,这样就不会出现none
o(︶︿︶)o 还是用插件好了,理解WP不够透彻慢慢折腾吧..
@mice 插件简单方便易用
如果文章没有tags会报错,建议加个if (get_the_tags()) 先判断下
@kisa747 第八行的get_the_tags前面加个(array)就可以解决了。
@阿修 先根据你的方法更正,貌似还有问题
@zwwooooo 其他问题得问作者本人啦~~
友情支持~~
我用的就是这个方法耶,呵呵
@万戈 呵呵,你的挺好的