我的趣看下网站的主要一方面是创意图片相关的,所以我一直都很关心图片缩略图方案的解决,以前只是选取内容里的第一张图片然后进行缩放,然后做为缩略图,其实这样的做法也不错,但是现在随着网站访问量越来越大,这种方法也已经有一点问题了,因为如果按原大小选择第一张,那么首页的图片总大小其实是很夸张的,甚至是整个网站总字节数的好多倍。那么有什么办法呢?先来看下Wordpress自带的缩略图解决方案。
其实wordpress已经自带缩略图功能了,在后台设置的媒体里,发展到现在的3.3.4,现在已经可以裁剪出其它的形状了,我一开始接触wordpress就是3.3.1,所以不知道以前的版本是怎样的,有人说早期的wp缩略图只能方形的。。。囧rz。。。好吧。回到正题,这个缩略图是跟着文章插入的图片走的,也就是说不在一个文件夹,缩略图满天飞,有时想删除一张就很抓狂,其实最让我抓狂的却是如果我在一篇文章里插入好几张图片,那么所有的图片都会生成缩略图。。。wp大哥啊,我只要第一张就行了啊!!!!这些种种的原因都促使我去找完美的缩略图解决方案。
现在来看看,我找到的方法吧~~~
wordpress缩略图方案之不用插件
这个方法其实很简单的,就是我以前用的,适用于文章不多的博客,只需要调用第一张图片进行缩放放就可以了!不用借助任何插件,哈哈,相信这点有诱惑力吧~~
第一步:在functions.php里加入下面的代码
function catch_first_image() { global $post, $posts; $first_img = ''; ob_start(); ob_end_clean(); $output = preg_match_all('//i', $post->post_content, $matches); $first_img = $matches [1] [0]; if(empty($first_img)){ //Defines a default image如果没找到定义默认图片 $themepath = bloginfo('stylesheet_directory'); $first_img = ''.$themepath.'/images/default_thumb.png'; } return $first_img; }
第二步:然后在调用的时候插入下面的代码就可以了!
<img src="<?php echo catch_first_image() ?>" alt="" width="260px" />
好了,是不是很简单,但是需要注意几个问题:
1.如果找不到第一张图片,那么这个函数就会调用主题文件夹里的images里的一张default_thumb.gif为默认的,这张图片你可以自己替换啦~~~
2.调用的图片如果只指定width或者height,那么就是等比缩放,如果指定二个,那么这张图片就会被挤到这个指定大小里,也就是说会变形失真.
wordpress缩略图方案之用插件
这个方法是我刚从一个国外的主题里找到的!作用就是程序会调用第一张图片放到cache里然后调用做为缩略图,没有的时候会自动调用我们指定的图做为缩略图!不错吧,我觉得非常棒,相信已经非常多人在用了,我google了一下,也确实是这样!但是这并不妨碍我分享的热情!哈哈!!!
第一步:下载timthumb.php然后放到你的主题目录
点此下载timthumb.php
解压密码:www.qukanxia.com
第二步:在functions.php插入以下代码
function post_thumbnail( $width = 100,$height = 80 ){ global $post; if( has_post_thumbnail() ){ //如果有缩略图,则显示缩略图 $timthumb_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full'); $post_timthumb = '</pre> <img src=".$timthumb_src[0]." alt=""'.$post-" /> <pre lang="LANGUAGE">post_title.'" class="thumb" />'; echo $post_timthumb; } else { $post_timthumb = ''; ob_start(); ob_end_clean(); $output = preg_match('//i', $post->post_content, $index_matches); //获取日志中第一张图片 $first_img_src = $index_matches [1]; //获取该图片 src if( !empty($first_img_src) ){ //如果日志中有图片 $path_parts = pathinfo($first_img_src); //获取图片 src 信息 $first_img_name = $path_parts["basename"]; //获取图片名 $first_img_pic = get_bloginfo('wpurl'). '/cache/'.$first_img_name; //文件所在地址 $first_img_file = ABSPATH. 'cache/'.$first_img_name; //保存地址 $expired = 604800; //过期时间 if ( !is_file($first_img_file) || (time() - filemtime($first_img_file)) > $expired ){ copy($first_img_src, $first_img_file); //远程获取图片保存于本地 $post_timthumb = '<img class="thumb" src="'.$first_img_src.'" alt="'.$post->post_title.'" />'; //保存时用原图显示 } $post_timthumb = '</pre> <img src=".$first_img_pic." alt=""'.$post-" /> post_title.'" class="thumb" />'; } else { //如果日志中没有图片,则显示默认 $post_timthumb = ' <img src="'.get_bloginfo(" alt=""'.$post-" /> post_title.'" class="thumb" />'; } echo $post_timthumb; } }
第三步:在调用的时候用以下代码调用
<?php post_thumbnail(300,100); ?>
好了,这个其实也插简单的,但是使用的时候请注意以下几个问题:
1.在网站的根目录下要新建一个cache的文件夹,并保证这个文件夹的读写权限
2.要设置当没有缩略图的时候调用已有的图为缩略图,跟上一个方法一样,也就是设置default_thumb.gif为默认的!可以啦!
3.调用的时候可以设置括号里的宽和高,如果不设置则以functions.php里默认的~~~哦哦
OK,收工啦!希望大家能从本文中找到有用的东西~~哈哈~~~
:mrgreen: 支持下,对于图片多的首页会大大减少首页体积,非常不错,你的网站也快了不少,嘎嘎!
高手呀
不知道博主能不能分享一下关于masonry插件如何布局的吧
我的情况和你的一样 也在考虑要不要用timthumb.php 所以就搜索过来了
在用timthumb,挺好用的