WordPress 免插件实现图片相关日志
实现 WordPress 带图片的相关日志,这个我之前是想都没有想过这个问题,因为我的博客上出现的最多的图片除了广大博友的头像,还有就是横五竖六的广告(还没有横七竖八那么多),我的日志正文中是很少有图片出现的,只因小弟我 PS 技术烂到不行,只能用文字和代码来弥补。不过我不需要带图片的相关日志,并不代表众博友也不需要,是吧?最近在与尘埃大哥合作的主题中,对于尘埃老哥这样一个以图片为生的博客,那 WordPress 上就必须有一个带图片的相关日志的功能啦。
WordPress 带图片的相关日志,作为非插件的代表人物,我居然第一时间想到的是用插件来实现,惭愧啊。试了一下 Linkwithin 和 thumbnails_anywhere 这两个知名插件都可以实现 WordPress 带图片的相关日志,不过代码相对来说很冗余,尤其是 linkwithin,而且设置也不够个性化,不能完美地满足我的要求。其实问题的关键就是我不会缩略图!
这里就要感谢尘埃老哥了,是他提醒我 WordPress 2.9 已经支持缩略图了!如梦初醒啊,用了这么久的 WordPress 2.9,居然刚知道 2.9 这么牛B,之前还在抱怨 WordPress 2.9 没啥新功能呢,哎哎哎~难点解决了,这免插件的 WordPress 带图片的相关日志也就好实现咯。
废话说太多了,还是进入正题吧。
1.开启 WordPress 2.9 隐藏的牛叉至极缩略图功能,在 funtions.php 中加入以下代码:
add_theme_support();
add_theme_support('post-thumbnails', array('post'));
}
这时在编辑日志时,可以看到右栏的下方多了一个模块,“文章缩略图”,这里就可以上传、设置、编辑缩略图,这样强大的功能不知道 WordPress 为什么要将它隐藏起来,真是的。
2.接下来就是把缩略图和相关日志结合起来,这就容易很多了。因为之前我已经有写过免插件实现 WordPress 相关日志的方法,我结合了其中的方法一,把以下代码放入 functions.php 中:
{
global $wpdb, $post,$table_prefix;
$limit = 6; //显示几条相关文章
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 . "'";
}
}
$limitclause = "LIMIT $limit";
$q = "SELECT p.ID, p.post_title, 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)
{
$output .= '<li>无相关日志</li>';
}
foreach ($related_posts as $related_post )
{
if ( has_post_thumbnail($related_post->ID) ) {
$related_thumb = get_the_post_thumbnail($related_post->ID,array(50,50),array('class'=>'relatedimg'));
} else {
$related_thumb = '<img class="relatedimg" src="http://wange.im/images/adforsale.gif" />';//无缩略图时显示默认图片
}
$dateformat = get_option('date_format');
$output .= '<li>'.$related_thumb;
$output .= '<a href="'.get_permalink($related_post->ID).'" title="'.wptexturize($related_post->post_title).' ('.mysql2date($dateformat, $related_post->post_date).')">'.wptexturize($related_post->post_title).'</a> ('. $related_post->comment_count .')';
$output .= '</li>';
}
$output = '<div><h3>相关日志</h3><ul>' . $output . '</ul></div>';
return $output;
}
function wp_related_posts_attach($content)
{
if (is_single()||is_feed())
{
$output = wp_get_related_posts();
$content = $content . $output;
}
return $content;
}
add_filter('the_content', 'wp_related_posts_attach',100);
这样就OK啦,不算太难吧,稍微发散一下思维就不难想到,缩略图的作用还不止于此,N久N久以前我介绍的用自定义域给每篇文章添加的缩略图也可以淘汰了,Wordpress 2.9 的 post thumbnails 缩略图功能完全可以替代自定义域添加的图片,而且方便简单,自定义程度更高,在和尘埃大哥合作的新主题中也有用到这招,帅呆了。有兴趣的想扩展一下的朋友可以继续参考这篇文章。
时间有限,代码可能写的比较粗糙,还请高手指正,谢谢。
-
WordPress 非插件缩略图的综合应用2010年09月14日 -
WordPress 实现带图片的点击量排行2011年03月26日 -
Wordpress 的缩略图利器 timthumb2011年01月17日 -
Wordpress 非插件相关日志的两种方法2010年04月4日
Warning: Missing argument 1 for add_theme_support(), called in C:\xampp\htdocs\wordpress\wp-content\themes\iphoto\functions.php on line 11 and defined in C:\xampp\htdocs\wordpress\wp-includes\theme.php on line 1851
添加到function.php里面,就出来这个错误。杯具啊
仔细读过博主的文章,觉得非常值得学习!
Pingback: WordPress 非插件缩略图的综合应用 - Prestan's Blog
我用的主题中funtions.php有和你几乎相同的这段代码,但是没有缩略图那段代码,我把我主题中的没有的这段代码加上后,出现“Parse error: syntax error, unexpected ')' in .../functions.php on line 502“错误。300行到360行是相关日志的代码,怎么会错误出现在502行呢?
检查一下你的{ }括号都闭合了没
正在尝试这段代码,不懂的到时找你帮手。
曾经折腾过,无果。十分感谢分享!
呵呵,不客气,能用上就好
万哥,越来越强了,钻研技术阿,wo
呵呵,不敢当啊,随便折腾的
找了好久,居然在这里!以前却没有看到!该死啊~
呵呵,这也是我这几天才写出来的
看上去很有用,不过目前俺用不着,用着的时候再来COPY
像你这样的图片站,其实可以考虑一下这个效果
很好很強大
我就用的笨法子 作图 上传 链接 显示 麻烦归麻烦 但是我乐在其中 文章中的图片倒不多
不过这个方法学习了
手动就是麻烦些,不过肯定比函数的相关度要更高,更精确
http://www.css88.com/archives/2248
您可以试试这个,单位不错!
我都已经干掉文章页的相关文章了
多好的功能呀,干掉可惜了
问个初级的问题,自己写代码不也是加了很多的函数吗?那和用插件有什么本质的区别呢?除了练手。
本质的区别就是自己写的代码更个性化,如果是多个插件就可能重复加载,比如重复加载jquery,就会造成网站速度很慢
需要个性文件,将来升级的时候不知道会不会引起问题~还是插件的灵活性好些,我觉得
应该不会啦,在调用函数之前已经加了function_exists判断
图片影响访问速度,最好少用!呵呵。。。。。。
我用了lazyload,应该会好些吧,呵呵
这个我知道。。。。。。。
你是隐藏BOSS
我不是小怪兽
我带奥特曼来消灭小怪兽
快闪
搞了这么久 ,结果你的皮肤还是没有出来,嘿 你怎么搞的 老佛爷,上次你就说很快能看到了,结果到现在还这个样子。。。
已经出来啦,只是有待完善,可以去尘埃那里看看
标题很吸引人,就是没看懂文章。
呵呵,瞎折腾的文章而已啦
呵呵 我现在的博客 很少放图片的~
我的基本也不放图片,呵呵
这个目前倒不需要。就来坐坐哈。
哈哈,能常来坐坐就好
我每天都能期待看到新主题,
嘿,新主题已经做好啦
复习空隙来看看你
复习?要考试了?
现在有个小问题,就是图片的一个灯箱插件,无效了!
等我回家看看哈
支持下~~~ 貌似模板也出成果了~~~
恩,基本已经完成啦
虽然也不大会用到这个功能,不过方法还是要学习一下的
呵呵,我折腾出来的新功能自己都没用上呢
Pingback: Wordpress 免插件实现图片相关日志 » 科技博客
我几乎不用缩略图
每个人的主题不同,我也不是很需要,呵呵
我基本不用图。
和我一样,哈哈
看的很强大,我也没怎么用图的
上那找那么多图加啊,这功能我看我得放弃~ ~
新主题看了,
学校机房ie6的情况下,感觉字体不够清晰,看起来泪眼。
ie7和火狐,我回去再看看
谢谢测试哈,字体方面确实还要改进一下
有这个好东西啊
嘿嘿,希望能对你有用吧
一直懒得加缩略图。主题已经看到了,很棒!
嘿嘿,谢谢,还有待完善呢
强悍,又来新的,呵呵,不错啊,很实用。
是新主题需要,否则我也不折腾了,呵呵
我一直懒得折腾这个功能,没去看过也不会
我也没想过要折腾这个功能,只是碰到了就解决一下啦
方法很好哇~~ 有空了也试试这个
恩恩,欢迎测试,我折腾一天的成果啊
哈哈,是你来晚啦
一直以来我都是twitter来的,发现feed完全速度不行
feed的速度哪里赶的上twitter同步的速度呀,哈哈
对了,最近有点小忙就有些日子没来你的网站看看,呵呵,抱歉了。我新做了一个,有时间的话过来看看吧,现在正在激情内测中,敬请关注,嘿嘿。。
看了一下,不错哦, 不是用WP做的吧
不做图片站,貌似也用不到~我的相关日志功能还是主题自带的
恩,摄影题材的主题会用的比较多一点
刚刚发布就这么多人围观了?羡慕!
好多好多滴代码啊
不要被数量给迷惑了,哈哈
估计挺累的,为了表示对努力工作者的敬意,我决定义务体验侧内。

期待万戈的主题早早上线
谢谢啊,主题已经上线了,尘埃正用着呢,呵呵
黑白红色调的?看起来没有这个高科啊
还在调试中呢,才三天赶出来的主题当然不能和我修改一年的主题比啦,呵呵
这样啊,我去过尘埃的博客了,咋感觉不帅气
还不是最终版呢
呵呵,php用的不错啊!这小函数用的,挺实用。如果,用oop会更好一点了,用类封装下,以后就不用这么麻烦了!
个人用封装啦,教程就不写出来了,呵呵
代码啊,还是算了吧。。
照葫芦画瓢啦,不难
Mark一下,回头仔细研究.
嘿,这就是我今天的折腾成果
我今天在合并css 刚完成...
MS我来得还算早~赶紧占位
让firefox 也记住我的信息...
不错不错..嘿嘿嘿
沙发是我的了
2楼
今天你的沙发没有咯
汗... 默认firefox , 但是我想用chromium 打开,于是复制地址... 于是..悲剧叻 ....
沙发??
来的挺早哈
推特刚刷,我刚好在电脑旁。没办法
嘿嘿