WordPress獲取設置縮略圖最全詳解-愛新聞

WordPress獲取設置縮略圖最全詳解

WordPress的縮略圖是WordPress的一個很重要的功能,最早的WordPress是沒有這個功能的,現在絕大多數的網站都是使用的WordPress縮略圖功能來展示主頁的,一般來講,WordPress的縮略圖功能是跟自己使用的主題是匹配的,所以有很多WordPress開發者(多局限於新手)在使用WordPress縮略圖的時候會產生很多誤區,甚至很多錯誤,導致的結果是:無故佔用大量的服務器空間消耗不必要的服務器資源,對訪問者來講會浪費大量的流量。

要開始,首先要確定自己的網站縮略圖是否正確調用了。比如說我在某一個網站的首頁,對文章縮略圖進行開發者分析,發現,雖然圖片顯示的是170*124小尺寸,但是原尺寸居然是540*159,以此證明,這裡的主頁是沒有正確調用縮略圖,而只是將原文中的原圖強制調整大小後放置在首頁作為縮略圖,這樣的結果就是訪問首頁將會消耗大量的流量。很多主題都存在這樣的問題,包括有野出沒之前的一款主題也是如此。

 

關閉WordPress默認縮略圖(必須)

WordPress默認情況下,會對每一張圖像進行縮略圖處理,如果使用的主題沒有對其進行設置,就會默認按照“小”“中”“大”三種縮略圖的樣式生成,一般來講我們是完全不需要這些縮略圖的話,這樣一來會產生大量的垃圾文件,所以對於每一個WordPress網站來講,關掉默認縮略圖是必須的工作。

關閉的方式是:登陸WordPress後台,點擊“設置”→“多媒體”。在媒體選項中,將所有的寬度高度全部設置為0,這樣就全部關掉了。

 

刪除已經生成的無用縮略圖的方法

對於已經生成了大量的縮略圖的博客來講,刪除這些縮略圖可以節約大量空間,可以使用WordPress插件:DNUI。安裝後可以自動掃描沒有使用的圖片和縮略圖,並且可以對其批量刪除。刪除完成之後就可以刪除這款插件了。

 

設置自己的WordPress縮略圖

既然已經關掉了默認的WordPress縮略圖,就該我們自己設置自己想要的縮略圖了。

首先要確定自己需要的縮略圖尺寸,以我為例,我需要兩種縮略圖,尺寸分別為160*120,命名為“thumbnail”,80*60,命名為“show”。我可以在我的function.php中添加如下代碼:

  1. if  ( function_exists('add_theme_support') )
  2. add_theme_support('post-thumbnails'); //添加文章“特色圖像”功能,即縮略圖功能  
  3. add_image_size('thumbnail', 160, 120, true); //設置第一種樣式名為thumbnail,長160,寬120 
  4. add_image_size('show', 80, 60, true); //設置第二種樣式名為show,長80,寬60

其中add_image_size()是WordPress中的函數,其中的參數如代碼所示,最後的true的意思是按照裁剪的方式裁剪縮略圖,這樣可以不至於讓縮略圖變形。

添加上述代碼後,每次上傳圖片就會自動生成兩種縮略圖。

 

如何重新生成縮略圖

對於網站換模板需要重新生成縮略圖的情況,可以使用WordPress插件:Regenerate Thumbnails。安裝之後,可以自動為全部的圖像生成已經設定好的圖像縮略圖。生成完之後就可以直接刪除這款插件了。

 

引用縮略圖

實現的方式也是比較簡單的,只需要使用WordPress自帶函數:get_post_meta(),比如

  1. get_post_meta( $post ->ID, 'thumbnail', true);

就是調用我之前設置的thumbnail的160*120尺寸的縮略圖。

對於獲取文章圖片,我編寫了一個函數,方便文章獲取縮略圖,選取順序是,外鏈圖片、縮略圖、隨機圖片。

  1. function  post_thumbnail_src( $size ){
  2. global  $post ;
  3. if (  $values  = get_post_custom_values( "show" ) ) {
  4. $values  = get_post_custom_values( "show" );  //在文章中的自定義字段中show對應的圖片地址
  5. $post_thumbnail_src  =  $values  [0];
  6. }  elseif ( has_post_thumbnail() ){
  7. switch ( $size ){
  8. case  'thumbnail':
  9. $thumbnail_src  = wp_get_attachment_image_src( get_post_thumbnail_id( $post ->ID), 'thumbnail');
  10. $post_thumbnail_src  =  $thumbnail_src  [0];
  11. break ;
  12. case  'show':
  13. $thumbnail_src  = wp_get_attachment_image_src( get_post_thumbnail_id( $post ->ID), 'show');
  14. $post_thumbnail_src  =  $thumbnail_src  [0];
  15. break ;
  16. default :
  17. break ;
  18. }
  19. }  else  {
  20. $post_thumbnail_src  =  '' ;  //如果沒有縮略圖獲取隨機圖片
  21. ob_start();
  22. ob_end_clean();
  23. $output  = preg_match_all('/<img.+src=[' "]([^'" ]+)['"].*>/i',  $post ->post_content,  $matches);
  24. $post_thumbnail_src  =  $matches  [1] [0];
  25. if ( empty empty ( $post_thumbnail_src )){
  26. $random  = mt_rand(1, 10);
  27. echo  get_bloginfo ( 'stylesheet_directory' );
  28. echo  '/img/random/'. $random .'.jpg';
  29. }
  30. };
  31. echo  $post_thumbnail_src ;
  32. }

上面的函數需要一個參數,就是自己設置的縮略圖名稱,紅色部分的縮略圖名稱可以根據自己的設置調整,使用時,直接使用該函數post_thumbnail_src(‘thumbnail’)

這樣設置完成後,你會發現,還是有很多文章沒有縮略圖,這是因為要想顯示縮略圖,必須要為這篇文章設置特色圖像,對於之前已經發表的文章,可以使用WordPress插件自動為文章設置特色圖像。Easy Add Thumbnail,安裝這款插件之後,在訪問文章的時候,會設置文章的第一張圖片作為特色圖像使用,但是前提是必須訪問一次文章,代碼也只執行一次。

 

未雨綢繆設置特色圖像

要想正常使用縮略圖,必須要為每一篇文章設置特色圖像,這對於我這種使用LiveWriter離線寫作的人來講很是麻煩,所以可以給網站添加一個如果沒有手動設置特色圖像的話,自動獲取第一張圖片作為特色圖像的功能。

只要在function.php中添加如下代碼:

  1. function  autoset_featured() {
  2. global  $post ;
  3. $already_has_thumb  = has_post_thumbnail( $post ->ID);
  4. if  (! $already_has_thumb ) {
  5. $attached_image  = get_children(  "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1"  );
  6. if  ( $attached_image ) {
  7. foreach  ( $attached_image  as  $attachment_id  =>  $attachment ) {
  8. set_post_thumbnail( $post ->ID,  $attachment_id );
  9. }
  10. }
  11. }
  12. }   //end function
  13. add_action('the_post', 'autoset_featured');
  14. add_action('save_post', 'autoset_featured');
  15. add_action('draft_to_publish', 'autoset_featured');
  16. add_action('new_to_publish', 'autoset_featured');
  17. add_action('pending_to_publish', 'autoset_featured');
  18. add_action('future_to_publish', 'autoset_featured');

如果感覺自動設置的圖像不合適,再去調整也來得及。

本文由唐野原創,轉載請保留鏈接: http://www.yelook.com/922.html

發佈留言