上周有TimThumb中发现的第二个漏洞谢天谢地,它远没有第一个那么糟糕,但它提出了一个有趣的问题,即TimThumb是否还需要。
TimThumb是为了对任何项目都有用而设计的——它从来都不是特定于WordPress的——所以从这个角度来看,肯定还有一些人对它感兴趣,但我真的不在乎。我专注于WordPress——那里需要它吗?我认为没有。
在第一次攻击之后,我继续在双星月亮上使用TimThumb。我想表明,已实施的修复是可靠的,没有人应该担心(似乎我错了),但大约6个月后,我决定开始正确使用WordPress帖子缩略图功能。
我一直在慢慢远离主题框架,而专注于入门主题,并使用WordPress编码标准和最佳实践。我想用“WordPress方式”做每件事。
使用WordPress内置的帖子缩略图功能非常直接。您注册一些图像大小,然后调用函数来获取图像html。然而,它也存在一些问题:
WordPress文章缩略图问题
- 图像大小在历史上不起作用。您可以轻松添加新图像大小,但不会更改旧图像。
- 这些图像依赖于使用特色图像。如果没有特色图像,则不会显示缩略图。
- 默认情况下,它不使用cdn,并且被包装在函数中,使用cdn更困难。
WordPress帖子缩略图问题的解决方案
多年来,我看到了这些问题,并想出了解决它们的方法。
图像大小
我喜欢重新生成缩略图插件ViperBond提供。这对你想调整图像大小或改变主题的时候来说很好。它在本地也很有效,这意味着我可以更容易地测试我正在制作的新主题。
作为旁白,我也经常使用css背景尺寸:封面有助于保持一致的属性,在进行响应性设计时非常有用。
无特色图片
对于那些历史上没有图片功能的网站来说,这可能是一个问题,或者只是因为人们忘记添加图片或没有意识到必须添加图片。我在双子星月亮上写博客已经将近10年了,但特色图片只出现了一半的时间。通过一些代码,我可以确保图像在可用时显示出来。
您只需将以下代码添加到您的主题functions.php
函数bm_my_post_thumbnail_html($html,$post_id,$thumbnal_id,$size=''){if(空($html)){$values=获取孩子(阵列(“post_parent”=>$post_id,“post_type”=>“附件”,“post_mime_type”=>“图像”,“订单”=>“ASC”,“orderby”=>“menu_order”,“numberposts”=>1,));if($值){foreach($values作为$child_id=>$attachment){$html=wp_get_attachment_image($child_id,$size);断裂;}}}返回$html;}add_filter('post_thumbnail_html','bm_my_post_thumbcnail_html',10,4);
缺少CDN
如果你是一名程序员,那么你可以很容易地设置一个过滤器来更改图像url,或者你可以安装许多缓存插件中的一个,比如W3总缓存可以设置为自动上传图像并更改url。一切皆有可能,但即使是插件也需要设置cdn/s3存储桶,因此对于技术水平较低的用户来说并不那么容易。
Jetpack&Photon–终极图像解决方案
我知道很多人不喜欢Jetpack飞机但我是个超级粉丝。我认为它有很多优点,但今天我只想提一下光子光子有两个主要用途。
- 这是一个图像cdn(内容交付网络)
- 它可以无缝调整图像大小(历史或其他)。
我应该注意,Photon只有在使用Jetpack时才可用。否则使用它是违反使用条款的。基本上,Photon解决了TimThumb解决的几乎所有问题,因此它是一个非常简单的一站式快速调整图像大小的商店。
有趣的是,前面提到的开发人员重新生成缩略图WordPress插件现在建议也使用Jetpack。
让我知道你的想法乳齿象,或蓝天 (或推特X(X)如果必须的话)。