WordPress 的縮略圖利器 timthumb

fmms 12年前發布 | 35K 次閱讀 WordPress 建站系統CMS

很多童鞋應該都有用過 WordPress 的縮略圖功能,暫且不說那些形形色色的縮略圖插件,Wordpress 2.9 版本之后就新增自帶了縮略圖的功能,但是不知道你有沒有和我同樣的感覺,Wordpress 自帶的縮略圖還是有很大的局限性,比如說只能自動裁剪一個正方形的圖片,而不能裁剪成長方形的;又比如說,只能接受站內或者說多媒體庫里的圖片,對站外圖片就無從下手了;再比如說圖片所在文件夾不是同一個,不方便管理。總之,Wordpress 自帶的縮略圖功能并沒有我們想象的那樣強大,這時候我們需要第三方文件 timthumb.php 項目來幫助我們。

現在我的主題上用到的縮略圖都是 timthumb.php 來實現的,具體實例可以看我的首頁幻燈片輪播部分,查看相應的幻燈圖片的源碼可以看到,圖片的地址路徑是 ****timthumb.php?src=****&h=245&w=560&zc=1 這樣的格式,這就是被 timthumb.php 生成的縮略圖,很神奇吧。

說了半天,什么是 timthumb.php 呢?這是一個專門為 WordPress 而開發的縮略圖應用的項目。有點類似于插件,但是又和 WordPress 插件不同,因為它不是被上傳于 plugins 文件夾下,而是需要上傳到你的主題文件夾中。你可以在這里了解和下載最新版本的 timthumb.php,一般默認配置也就可以了,如果想進一步優化可以根據需要修改 timthumb.php 里前30行的參數。

說到 WordPress,純文字有點太對不起觀眾,所以最后上一段我自用的縮略圖代碼,結合了 timthumb.php 和 WordPress 自帶的縮略圖功能,支持站外鏈接圖片,自動緩存圖片。代碼如下:

<?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 = '<img src="'.get_bloginfo("template_url").'/timthumb.php?src='.$timthumb_src[0].'&amp;h='.$height.'&amp;w='.$width.'&amp;zc=1" alt="'.$post->post_title.'" class="thumb" />';
        echo $post_timthumb;
    } else {
        $post_timthumb = '';
        ob_start();
        ob_end_clean();
        $output = preg_match('/<img.+src=[\'"]([^\'"]+)[\'"].*>/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 src="'.$first_img_src.'" alt="'.$post->post_title.'" class="thumb" />';    //保存時用原圖顯示
            }
            $post_timthumb = '<img src="'.get_bloginfo("template_url").'/timthumb.php?src='.$first_img_pic.'&amp;h='.$height.'&amp;w='.$width.'&amp;zc=1" alt="'.$post->post_title.'" class="thumb" />';
        } else {    //如果日志中沒有圖片,則顯示默認
            $post_timthumb = '<img src="'.get_bloginfo("template_url").'/images/default_thumb.gif" alt="'.$post->post_title.'" class="thumb" />';
        }
        echo $post_timthumb;
    }
}
?>

可以把這部分函數寫進 WordPress 主題的 functions.php 里,然后再用 post_thumbnail( 100,80 ) 這樣調用,其中的 $width 和 $height 是必須的參數喲。以上代碼不多作解釋了,注釋都寫的蠻詳細了。今天就到這里,事情太多,洗洗睡了~

文章出處:http://wange.im/timthumb-for-wordpress.html

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!