本篇测试帖已经完成历史使命,请转到插件正式主页:

http://niaolei.org.cn/wp-thumbnails


本人写的第一个插件,高效率的WordPress缩略图插件《Random Post with Picasa Image》,实现首页文章缩略图功能、分类页文章缩略图功能、标签页文章缩略图功能(与picasa无关),并且使用Google Picasa的外链缩略图显示wordpress博客的随机日志(可以与与picasa无关)。(如果觉得绕,看成两个插件:首页缩略图插件 + 随机图片日志插件)

Google Picasa是什么东东:Google Picasa是Google提供的免费图片处理软件和免费相册空间。

我是这个站的站长,使用WordPress以来,一直没能找到一款满意的随机图片日志插件,目前的随机图片/缩略图片插件都存在各种问题:

1.有些插件如《Random Post with Image》不能显示真正的缩略图,仅仅是加一个width和height属性,导致图片扭曲变形,效果很难看。

2.有些能生成真正的缩略图,但仅限于本地图片,不能处理外链图片。而很多博客为了减轻服务器负担,图片多为外链。

3.《Post Thumb Revisited》功能超级强大,能满足一切要求。但是特别消耗资源,试用这款插件的时候,本站所在的服务器经常被当掉。我试图在本地php环境利用Post Thumb Revisited制作缩略图,结果apache进程的CPU和内存占用惊人,服务器完全失去响应。

4.大部分相册插件都操作复杂。

一直很羡慕煎蛋和鸸鹋侧边栏的随机日志图片样式,小巧的六格图片,风格紧凑,很有新意。煎蛋服务器很强大,不能比; 鸸鹋是手动加的,冏。
高效率的WordPress缩略图插件:Random Post with Picasa Image
今天我忙活了一晚上,自己动手写了这个插件:Random Post with Picasa Image。本来我只是添加些php语句到模板,写着写着发现做成插件简洁得多,结果写出了我的第一个WordPress插件。

插件名称:

《Random Post with Picasa Image》

插件功能:

1.首页文章缩略图、分类页文章缩略图、标签页文章缩略图效果,首页缩略图效果基本等同于仲子说的首页文章缩略图显示插件《Image For Homepage》,也类似首页缩略图插件《thumbnail-for-excerpts》(我的不需要手动添加缩略图地址),即选取文章的第一张图片作为缩略图,可以处理站内和外链picasa图片。

2.随机图片日志效果,即可以在站内任何地方显示随机缩略图片,图片链回原日志。可以处理站内和外链picasa图片。(如果你想链回原始大图当相册使用,可以留言告诉我,我想看看有没有这样的需求。)

插件局限:

插件几乎完全局限于picasa图片(经过修改,可以处理任意图片)。如果你的网站大量使用Google Picasa外链图片,那么这款插件很适合你。为什么要使用picasa做缩略图,看看WP插件Easy Picasa作者给出的这张图片:
高效率的WordPress缩略图插件:Random Post with Picasa Image

picasa外链图片功能非常强大,你上传的每一张图片,都会自动生成不同大小规格的副本,如表中两列所示,有多种规格的图片供你外链到你的博客,更有意思的是,picasa为你生成了多种正方形裁减的缩略图,这样你完全可以省去制作缩略图的步骤,节省空间资源,直接利用picasa缩略图片显示随机图片日志。

插件Random Post with Picasa Image完全为此而生。

插件优点:

非常高效,通过访问自定义字段ta-thumbnail并自动填充维护该字段,大大减少了数据库访问,数据库访问开销几乎可以不计。

插件下载:

链接为最新版本:Version 1.1.7
http://img.niaolei.org.cn/uploads/2009/05/thumbnails_anywhere_v117.zip

插件已经更新为新插件:Thumbnails Anywhere。

主页:http://niaolei.org.cn/posts/4058

(将来打算支持多种外链图片,并更名插件为Thumbnails Anywhere)

插件主页:

http://niaolei.org.cn/posts/4012

插件安装和使用:

下载,上传,激活。

版本升级:请先停用接着删除旧插件,然后再安装新插件。(如果激活时提示“插件文件不存在”,是因为旧版本文件没有删除)

这里有三个函数,分别对应不同功能,需要你手动把它们放到正确的位置:(只有红色部分需要粘贴)

1. <?php picasa_image_for_homepage(); ?>: 在首页显示缩略图,这是最简单的调用方式,全部采用默认数值。

完整又安全的调用形式:<?php if(function_exists('picasa_image_for_homepage')) { picasa_image_for_homepage ($thumbsize = 144, $crop = false, $newwindow = true, $defaultimage = "", $position = "right"); } ?>

表示:缩略图最大高度/宽度为144px,不裁剪成正方形缩略图,日志链接在新窗口打开,不显示替代缩略图片,缩略图靠右显示。

以上是默认数值,你可以根据自己需要修改括号中的三个数值。其中:

$crop:$crop=true表示显示裁剪成正方形的缩略图,例如本站侧边栏的缩略图片; $crop=false表示保持高宽比,不裁剪。不接受其他数值。

$thumbsize:当 $crop = true 时,$thumbsize 只能取如下数值:32,48,64,72,144,160; 当 $crop = false时,$thumbsize 只能取如下数值:32,48,64,72,144,160,200,288,320,400,512,576,640,720,800. 不接受其他数值。

$newwindow:$newwindow=true 表示在新窗口打开,$newwindow=false 表示在当前窗口打开。不接受其他数值。

$defaultimage :"" 表示该日志没有图片时所显示的默认替代图片,比如我的网站设置为:$defaultimage= "http://lh4.ggpht.com/_uXYSYq33_r8/SXSiVmv5OlI/AAAAAAAADwE/CnVLwnybYFk/s144-c/khlneyJ2lTC.jpg"(就是一只可爱的拉屎小翠鸟,这只shitting bird会出现在本站所有无图片文章的缩略图处)

$position: $position="right", 靠右; $position="left", 靠左。不接受其他数值。

将如下代码放置在首页index.php循环体内,即the_content或者the_excerpt前面。如果要实现分类页文章缩略图和标签页文章缩略图,依葫芦画瓢,找到相应php文件,同样位置添加同样的代码。

<div class="PostContent" >
<?php picasa_image_for_homepage(); ?>
<?php the_content(''); ?>
</div>
<div class="clear-float"> </div>

默认放置在右边。注意有必要用clear-float来清除样式。

查看效果图:(首页文章缩略图)
高效率的WordPress缩略图插件:Random Post with Picasa Image

查看效果图:(分类页文章缩略图)
高效率的WordPress缩略图插件:Random Post with Picasa Image

查看效果图:(标签页文章缩略图)
高效率的WordPress缩略图插件:Random Post with Picasa Image

2.<?php picasa_image_for_random_post(); ?> :在任意位置显示随机图片,图片链接指向图片所在的文章,这是最简单的调用方式,全部采用默认数值。

注意:如果你没有使用本插件的首页文章缩略图功能,则必须同时调用第三个函数update_picasa_thumb_meta。(下文3中介绍)

完整又安全的调用形式:<?php if(function_exists('picasa_image_for_random_post')) { picasa_image_for_random_post ($number  = 6, $thumbsize = 72, $newwindow = false, $localthumb = true); } ?>

以上是默认数值,你可以根据自己需要修改括号中的三个数值。其中:

$number:显示缩略图张数。

$thumbsize:只能取如下数值:32,48,64,72,144,160。都是裁剪后的缩略图。

$newwindow:newwindow=true 表示在新窗口打开,newwindow=false 表示在当前窗口打开。

$localthumb:$localthumb = true 表示显示任意图片,$localthumb = false 表示只显示picasa缩略图片。请注意:显示的本地缩略图片并不是真正的缩略图,比如600px*400px的本地图片,我仅仅是加个高度宽度限制显示为72px*72px; 只有调用picasa图片才能显示真正的72px*72px缩略图,这样的缩略图具有体积小,加载快速,不变形的优点。

参考CSS已集成到插件,可以显示多行多列的随机缩略图,具体背景颜色,宽度,间距等请自己编辑插件调整。(插件目录下的style.css)

相应的php代码放在任意位置

<?php picasa_image_for_random_post(); ?>

查看效果图:(显示超多的图片都没有问题,不会拖慢速度。)
高效率的WordPress缩略图插件:Random Post with Picasa Image

3.<?php update_picasa_thumb_meta(); ?>:自动更新维护缩略图自定义字段。它是一个辅助函数,上面两个主函数至少有一个要调用它。

如果你调用了首页文章缩略图功能,可以不管这个函数, <?php picasa_image_for_homepage(); ?>会自动调用这个函数;

如果你没有调用首页文章缩略图功能,则必须启用这个函数,将如下代码放置在单篇日志single.php中,这样该文章只要被访问一次,就会自动从日志中寻找第一张picasa图片作为缩略图,将它的url地址填充进缩略图自定义字段。放置位置可以是single.php任意位置,建议放置在循环体内,the_post()下方:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php update_picasa_thumb_meta(); ?>

完整又安全的调用形式:<?php if(function_exists('update_picasa_thumb_meta')) { update_picasa_thumb_meta(); } ?>

插件历史:

(附历史版本下载地址)

1.1.7(2009.5.12)

http://img.niaolei.org.cn/uploads/2009/05/thumbnails_anywhere_v117.zip

可选显示本地的伪缩略图片;

调整部分参数调用形式,是参数看上去更直观。(注意调整放置代码)

1.1.6(2009.5.12)

http://img.niaolei.org.cn/uploads/2009/05/thumbnails_anywhere_v116.zip

自动建立自定义域ta-thumbnail(取代原来的picasathumb),简化安装。

1.1.5(2009.5.11)

http://img.niaolei.org.cn/uploads/2009/05/thumbnails_anywhere_v115.zip

接到<a class="external" rel="external nofollow" href莆田猪和<a class="external" rel="external nofollow" href中国染料网的报告,修正集成CSS的bug(此bug导致部分用户安装后显示空白页面)。(重要更新)

1.1.4(2009.5.10)

http://img.niaolei.org.cn/uploads/2009/05/random_post_with_picasa_image_v114.zip

集成所有CSS到插件,简化安装。

1.1.3(2009.5.9)

http://img.niaolei.org.cn/uploads/2009/05/random_post_with_picasa_image_v113.zip

修正代码中处理缩略图的顺序。(重要更新)

1.1.2(2009.5.9)

http://img.niaolei.org.cn/uploads/2009/05/random_post_with_picasa_image_v112.zip

修正不能识别picasa图片大写后缀(JPEG,jpg,BMP,GIF,PNG)的bug;(重要更新)

取消对不常见的图片后缀支持;

增加设置:首页显示文章缩略图时,当缩略图不存在时,是否显示用户设置的默认图片;

自动清理以前版本写入的错误信息。

1.1.1(2009.5.8)

http://img.niaolei.org.cn/uploads/2009/05/random_post_with_picasa_image_v111.zip

修正缩略图显示数量不完整的bug;(重要更新)

添加“nofollow”标记,减少重复链接.

1.1(2009.5.8)

http://img.niaolei.org.cn/uploads/2009/05/random_post_with_picasa_image_v11.zip

接到zozoozo.cn的报告,发现遗漏对部分图片链接格式的处理。本次更新如下:

覆盖picasa所有图片大小规格(从32px到1600px),增加对?imgmax=链接形式的处理;(重要更新)

改进picasathumb字段值的表示;

可以自由设置显示图片大小;(重要更新)

首页文章缩略图链回原日志;

首页文章缩略图自由设置显示裁剪后的缩略图,还是保持比例的缩略图(默认首页文章缩略图在新窗口打开,随机图片在当前窗口打开);

增加图片类型支持:jpg,jpeg,bmp,gif,png.覆盖常见格式。(重要更新)

1.0.1 (2009.5.7)

http://img.niaolei.org.cn/uploads/2009/05/random_post_with_picasa_image_v101.zip

识别picasa各种规格图片:大于72的图片都转化为72-c的剪裁缩略图。(重要更新)

1.0 (2009.5.6)

http://img.niaolei.org.cn/uploads/2009/05/random_post_with_picasa_image_v10.zip

完成插件,实现以下功能:

首页文章缩略图;

任意位置展示picasa缩略图片,链回原日志;

自动更新维护自定义域picasathumb.

插件提醒:

1.很多人在首页已经输出大图了(采用<!--more-->标签),如果你想只显示缩略图的话,并且对WordPress模板有点了解的话,得把the_content()函数改成the_excerpt()函数输出摘要(查看wordpress中the_excerpt()和the_content()函数区别),或者自己编辑日志修改啦。

2.每篇文章都有一个自定义字段ta-thumbnail,如果你觉得插件提取的缩略图不够漂亮,请手动添加另一张图片的url地址用于更新ta-thumbnail的值。

3.没有重要更新的话,你不需要跟进我的每一个版本。只要插件在你的网站运行良好就不用更新。

4. TODO:(请补充)

添加“nofollow”标记,减少重复链接。 (DONE)

集成CSS到插件,请指教该怎么实现; (DONE)

扩展识别yupoo,flickr等外链图片。

目前提取图片的正则表达式为:

高效率的WordPress缩略图插件:Random Post with Picasa Image

请教该如何将它们合并?并且这两个正则表达式不能处理形如<img alt="" width="" src="">的图片,因为img和src中间还有字符串干扰。

图片显示不出来的情况很可能跟提取图片的正则表达式相关。

插件写得很简单,看看里面的代码对你开始深入了解WordPress有一定的帮助,欢迎一同修改扩充我的插件。

新开一贴《各大外链图片的链接格式》,有兴趣请前往。

5. 插件停止更新(仍会适当维护)。可能插件在你的网站显示效果不满意,请仔细查看说明,确保代码调用正确以及代码位置放置正确。插件各项功能已经通过本人和多位用户的测试,一切运行良好。我把各个历史版本都放出来了,懂php的请自行修改,修改后可自行发布,我下一个插件叫做《Thumbnails Anywhere》,只要你发布的修改版不占用这个名字就行。联系我:插件主页,邮箱9000birds#gmail.com(来信请附注详细说明+大量截图)。我最近两个月会很忙很忙,不保证有求必应,请见谅。

新插件出来了,支持yupoo和flickr图片,请多多测试,

《Thumbnails Anywhere》。