实现 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 中加入以下代码:

if(function_exists(‘add_theme_support’)){ //确保 WordPress 2.9 且支持缩略图的函数
add_theme_support();
add_theme_support(‘post-thumbnails’, array(‘post’));
}

这时在编辑日志时,可以看到右栏的下方多了一个模块,“文章缩略图”,这里就可以上传、设置、编辑缩略图,这样强大的功能不知道 WordPress 为什么要将它隐藏起来,真是的。

2.接下来就是把缩略图和相关日志结合起来,这就容易很多了。因为之前我已经有写过免插件实现 WordPress 相关日志的方法,我结合了其中的方法一,把以下代码放入 functions.php 中:

function wp_get_related_posts()
{
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 src=”http://mathcai.com/wp-content/uploads/auto_save_image/2011/02/060322FLZ.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 缩略图功能完全可以替代自定义域添加的图片,而且方便简单,自定义程度更高,在和尘埃大哥合作的新主题中也有用到这招,帅呆了。有兴趣的想扩展一下的朋友可以继续参考这篇文章

时间有限,代码可能写的比较粗糙,还请高手指正,谢谢。

Form:http://wange.im/related-posts-with-thumbs-for-wordpress.html

赞赏

微信赞赏支付宝赞赏

「赏不在多,觉得文章有用,就赞赏下吧!」

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据