WORDPRESS完美的缩略图方案-Timthumb-用不用插件随你

wordpress 缩略图

我的趣看下网站的主要一方面是创意图片相关的,所以我一直都很关心图片缩略图方案的解决,以前只是选取内容里的第一张图片然后进行缩放,然后做为缩略图,其实这样的做法也不错,但是现在随着网站访问量越来越大,这种方法也已经有一点问题了,因为如果按原大小选择第一张,那么首页的图片总大小其实是很夸张的,甚至是整个网站总字节数的好多倍。那么有什么办法呢?先来看下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-&gt;ID),'full');
        $post_timthumb = '</pre>
<img src=".$timthumb_src[0]." alt="&quot;'.$post-" />
<pre lang="LANGUAGE">post_title.'" class="thumb" /&gt;';
        echo $post_timthumb;
    } else {
        $post_timthumb = '';
        ob_start();
        ob_end_clean();
        $output = preg_match('//i', $post-&gt;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)) &gt; $expired ){
                copy($first_img_src, $first_img_file);    //远程获取图片保存于本地
                $post_timthumb = '<img class="thumb" src="'.$first_img_src.'" alt="'.$post-&gt;post_title.'" />';   //保存时用原图显示
            }
            $post_timthumb = '</pre>
<img src=".$first_img_pic." alt="&quot;'.$post-" />
post_title.'" class="thumb" /&gt;';
        } else {    //如果日志中没有图片,则显示默认
            $post_timthumb = '
<img src="'.get_bloginfo(" alt="&quot;'.$post-" />
post_title.'" class="thumb" /&gt;';
        }
        echo $post_timthumb;
    }
}

第三步:在调用的时候用以下代码调用

<?php post_thumbnail(300,100); ?>

好了,这个其实也插简单的,但是使用的时候请注意以下几个问题:
1.在网站的根目录下要新建一个cache的文件夹,并保证这个文件夹的读写权限
2.要设置当没有缩略图的时候调用已有的图为缩略图,跟上一个方法一样,也就是设置default_thumb.gif为默认的!可以啦!
3.调用的时候可以设置括号里的宽和高,如果不设置则以functions.php里默认的~~~哦哦

OK,收工啦!希望大家能从本文中找到有用的东西~~哈哈~~~



无觅相关文章插件,快速提升流量