无插件实现“相关日志”的显示,代码为本人修改自WordPress Related Posts插件 ,无相关日志时显示随机日志(或显示“无相关日志”,可配置)。
使用效果如本博所示。和我一样喜欢折腾的朋友拿去吧:-)
使用方法:
方法1
直接下载:
wp_related_posts_hywd.zip 下载 (1.6 KB, 176 次)
1 | require_once('wp_related_posts_hywd.php'); |
或者
方法二:
将以下代码添加到你目前使用的主题的functions.php文件的最后一个?>标签前面即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | ####### START ########## 显示相关日志 ################# START ######### ########################### www.ihacklog.com ###################################### $wp_rp=array( 'limit'=>6, //显示几条相关文章 'wp_rp_rss'=>true, //在rss feed 中显示相关文章 'wp_no_rp'=>'random', //无相关文章时的选择:text 或random (random为显示随机文章) 'wp_rp_date'=>true, //显示日志发布日期 'wp_rp_comments'=>true, //显示日志评论数 'wp_rp_title_tag'=>'h3',//相关日志标题标签(h2 ,h3 ,h4 ,p ,div) ); function wp_get_random_posts ($limitclause="") { global $wpdb, $post; $q = "SELECT ID, post_title, post_content,post_excerpt, post_date, comment_count FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND ID != $post->ID ORDER BY RAND() $limitclause"; return $wpdb->get_results($q); } function wp_get_related_posts() { global $wpdb, $post,$wp_rp; $limit =$wp_rp["limit"]; $wp_rp_title='相关日志'; if(!$post->ID){return;} $now = current_time('mysql', 1); $tags = wp_get_post_tags($post->ID); $taglist = "'" . $tags[0]->term_id. "'"; $tagcount = count($tags); if ($tagcount > 1) { for ($i = 1; $i < $tagcount; $i++) { $taglist = $taglist . ", '" . $tags[$i]->term_id . "'"; } } if ($limit) { $limitclause = "LIMIT $limit"; } else { $limitclause = "LIMIT 10"; } $q = "SELECT p.ID, p.post_title, p.post_content,p.post_excerpt, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb->term_taxonomy t_t, $wpdb->term_relationships t_r, $wpdb->posts p WHERE t_t.taxonomy ='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt < '$now' GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC $limitclause;"; $related_posts = $wpdb->get_results($q); $output = ""; //不存在相关日志则显示随机日志 if (!$related_posts) { if($wp_rp['wp_no_rp'] == "text") { $output .= '<li>无相关日志</li>'; } else { if($wp_rp['wp_no_rp'] == "random") { $wp_no_rp_text= '随机日志'; $related_posts = wp_get_random_posts($limitclause); } $wp_rp_title = $wp_no_rp_text; } } foreach ($related_posts as $related_post ) { $output .= '<li>'; if($wp_rp['wp_rp_date']) { $dateformat = get_option('date_format'); $output .= mysql2date($dateformat, $related_post->post_date) . " // "; } $output .= '<a href="'.get_permalink($related_post->ID).'" title="'.wptexturize($related_post->post_title).'">'.wptexturize($related_post->post_title).'</a>'; if ($wp_rp["wp_rp_comments"]) { $output .= " (" . $related_post->comment_count . ")"; } $output .= '</li>'; } $output = '<ul class="related_post">' . $output . '</ul>'; $wp_rp_title_tag = $wp_rp["wp_rp_title_tag"]; if(!$wp_rp_title_tag) $wp_rp_title_tag ='h3'; if($wp_rp_title != '') $output = '<'.$wp_rp_title_tag.' class="related_post_title">'.$wp_rp_title .'</'.$wp_rp_title_tag.'>'. $output; return $output; } function wp_related_posts_attach($content) { global $wp_rp; if (is_single()||(is_feed() && $wp_rp["wp_rp_rss"])) { $output = wp_get_related_posts(); $content = $content . $output; } return $content; } add_filter('the_content', 'wp_related_posts_attach',100); ####### END ########## 显示相关日志 ################# END ######### ########################### www.ihacklog.com ###################################### |
喜欢这篇文章吗?
请订阅本站 RSS feed 或





11:26 下午, 2011年08月23日yangod /
这个可以用在3.2上吗?还有能实现图文并茂吗?我会用这个取代无觅插件
10:37 下午, 2011年08月23日yangod /
可以实现图文并茂吗?
9:02 下午, 2011年08月3日速强的翅膀 /
按博主的方法2做了,成功!谢谢
2:44 下午, 2011年02月22日liveme /
有空可以折腾一下,最近无觅的网络总是无法访问,还不知道他们出什么问题
7:20 下午, 2010年12月23日天鹰剑 /
非常感谢,我成功了,希望大哥能教我如何玩转自己的WP博客
10:04 下午, 2010年11月9日浩子 /
压缩包坏了……
9:43 下午, 2010年10月27日Twikker /
终于找到了这段能用的代码,老大,来,天崩地裂啵一个。。。哈哈
10:42 下午, 2010年10月24日PP /
没有functions.php咋整哦
9:51 上午, 2010年09月10日ylsnuha /
请问怎样让文章下面左边显示相关日志,右边显示随机日志呢。。。因为这个代码也有随机日志的函数,怎样直接调用使用吗?
12:45 下午, 2010年09月10日荒野无灯 /
直接调用不行的,要自己写一个函数吧。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
$related_posts = wp_get_random_posts($limitclause);
foreach ($related_posts as $related_post )
{
$output .= '<li>';
$dateformat = get_option('date_format');
$output .= mysql2date($dateformat, $related_post->post_date) . " // ";
$output .= '<a href="'.get_permalink($related_post->ID).'" title="'.wptexturize($related_post->post_title).'">'.wptexturize($related_post->post_title).'</a>';
$output .= " (" . $related_post->comment_count . ")";
$output .= '</li>';
}
$output = '<h3>随机日志</h3><ul class="related_post">' . $output . '</ul>';
echo $output;
}
//调用 :
output_random_posts(‘LIMIT 10’);
11:42 上午, 2010年10月13日listensea /
会出错呀~~
10:57 下午, 2010年08月19日NianQing /
请教一下博主哈! 能否把相关日志放到指定位置? 谢谢哈!
11:02 上午, 2010年07月2日Mr.差不多 /
这个我用的Willin大叔的,很赞!!
7:37 上午, 2010年05月10日快乐岛博客 /
按http://www.ihacklog.com/wordpress/wpskills/wordpress-related-posts-with-no-plugin.html/comment-page-3#comment-1753方法修改后出现:
Fatal error: Call to undefined function wp_get_related_posts() in /home/yggcwx/domains/kuailedao.org/public_html/wp-content/themes/cleanblue/single.php on line 68
11:09 上午, 2010年05月9日快乐岛博客 /
博主:
您好!
1.您在http://www.ihacklog.com/wordpress/wpskills/wordpress-related-posts-with-no-plugin.html/comment-page-3#comment-1753中的回复已学习:“去掉wp_related_posts_attach这个函数”,是指在您提供的方法一的php文件中删除那些字母吗?小白来了,别见怪~
2.按方法一,我前边试验时在无相关日志时不显示随机日志,又该改哪里的什么东东呢?
谢谢!
5:43 下午, 2010年05月8日aserlee /
第一种方法很不错,请教一个问题,我用了之后发现“文章出处”只能排在相关文章的下面,怎么它让排在相关文章上面?也就是随意调用的问题……
第二种如果没有相关的文章,就没有随机的文章,不好~!
9:53 上午, 2010年05月9日荒野无灯 /
对于你的第一个问题:如果你是看了《利用filter自动为wordpress文章添加版权说明》添加的版权,那么只要把其中的
修改为
就可以了。
对于你提出的第二个问题:其实第一种和第二种方法都是一个方法。没有相关文章就显示随机的文章,
就行了。
5:17 下午, 2010年05月8日快乐岛博客 /
博主啊,遇到疑难了:我喜欢方法一,但测试后无法控制相关日志的显示位置,很难看;详情已发邮件给您,请查收,烦请抽空指点一二。
9:56 上午, 2010年05月9日荒野无灯 /
呵呵,其实你的问题已经有人提出了:见 这里
11:26 下午, 2010年05月2日快乐岛博客 /
博主你好:如果用第一种方法,如何进行各种设定?比如,按标签的相关性显示相关日志,而不是按分类?
9:42 上午, 2010年05月3日荒野无灯 /
这里只是列出有相同标签的文章而已,何来分类?
10:01 下午, 2010年04月25日whoas123 /
10:18 下午, 2010年04月25日荒野无灯 /
可以肯定的是,你在此页面看到的,不是那种只显示第一个tag的
11:12 下午, 2010年04月25日whoas123 /
6:54 下午, 2010年04月25日pityonline /
成功!感謝作者的劳动!
6:37 下午, 2010年04月25日念青 /
挺好,三个问题希望帮忙解决:
一、我的相关日志在“本文发表于 2009年11月25日,星期三 2:00 下午 | 归类:……”之上,我想让它出现在上述文字之下,不知道该怎样修改主题;
二、加入此段代码后,后台出现错位的情况,后台登录页不居中,内页右侧跑到下方去了。大概应该修改哪里?
三、将’wp_rp_comments’=>设为flase, 结果无效,仍然出现带括号的评论数。
谢谢
9:59 下午, 2010年04月25日荒野无灯 /
一,第一个问题,去掉wp_related_posts_attach这个函数和
这一行代码,在你模板single.php中你需要的地方添加:
二,第二个问题,我想这可能跟你使用本文中的代码无关,此代码并不对后台作任何操作,也没有添加相关样式信息,因此,你的后台错位很可能是你使用其它插件导致的。
三,第三个问题,你可能添加了引号或其他东东,你用false或者 0都可以如:
或
5:38 下午, 2010年07月28日念青 /
新版本不会出现后台位置错位的现象了。
7:53 下午, 2010年04月18日朵未 /
嘿嘿,这个好,俺再去整下,多谢~
3:46 下午, 2010年04月18日老饕 /
呵呵~效果不错~搬走了!
6:51 下午, 2010年04月18日荒野无灯 /
@老饕, 嗯 ,这个没有插件笨重,可配置,功能也不错。目前我一直在用。
5:34 上午, 2010年04月17日三分微笑个人博客 /
刚才找见个精简版的代码 貌似不怎么好用 谢谢 LZ 试试这个了
12:37 下午, 2010年04月8日AnQ /
其实也就是需要这么多内容,有tag的时候现在相关文章,没有就显示随机文章
7:01 下午, 2010年04月4日若谷 /
又可以少一个插件了
3:43 下午, 2010年04月7日荒野无灯 /
@若谷, 其实这个和插件的原理 是差不多的。不过有些插件弄的东西太多了,如果我们只要其中部分功能,用这种方法就相当合适了。
2:11 下午, 2010年01月19日nan /
‘wp_rp_date’=>true,
如果不显示怎么判断
2:01 下午, 2010年01月19日nan /
‘wp_rp_date’=>true, //显示日志发布日期,那如果不显示,true,应该改成啥?
6:04 下午, 2010年01月23日荒野无灯 /
@nan, 如果不显示,只要修改为
‘wp_rp_date’=>false,
1:34 下午, 2010年01月2日叶子 /
反馈个问题,添加相关代码后单篇日志显示了相关日志,但是没有“相关日志”这样的标题,如果自行添加的话该如何操作?
12:00 下午, 2010年01月5日荒野无灯 /
@叶子, 今天更新了下代码,其实上面那个压缩包里的代码是有“相关日志”这样的标题的,上面的文章中没有加上,现在修改了。
7:21 下午, 2009年12月2日gil /
现在流行不使用插件,咔咔!~~
3:45 下午, 2009年12月2日万戈 /
我喜欢方法二~
我现在用的simple tags有这功能,所以就暂时不用这个方法了
3:42 下午, 2009年12月2日licream /
沙发。我去改用你的哈哈