為沒有設置縮略圖的文章隨機顯示縮略圖


為沒有設置縮略圖的文章隨機顯示縮略圖


博客首頁顯示的文章圖片是特色圖像,如果需要顯示特定的圖片,需要在添加文章時單獨設置,而一般情況下,我們不可能為每篇文章都設置特色圖像。也因此,出現了兩種比較流行的設置特色圖像的簡便方法:第一種是假如沒有手動設置特色圖像就自動設置文章裡出現的第一張圖片為特色圖像,第二種是假如沒有手動設置特色圖像就設置一張默認的圖片為特色圖像。也有兩者的結合,通過條件語句,如果有圖片就第一種,如果沒有圖片就第二種。

我是不太喜歡第一種,畢竟,並不是所有的第一張圖片都適合作為特色圖像。而第二種也有問題,假如沒有圖片的文章較多,則顯示的特色圖像就都是一樣的。我需要的是假如不手動設置特色圖像則在準備好的多張圖片中隨機顯示一張,如果稍微多準備一點特色圖片,那麼重複的可能性就會低。



這種方法網上並不多見,完整代碼如下:

<code>/**
* 為沒有設置縮略圖的文章隨機顯示縮略圖

*/
if ( function_exists('add_theme_support') )add_theme_support('post-thumbnails');
//讓你的主題開啟特色圖像功能
function post_thumbnail_src(){
global $post;
if( $values = get_post_custom_values("thumb") ) {//輸出自定義域圖片地址
$values = get_post_custom_values("thumb");
$post_thumbnail_src = $values [0];
} elseif( has_post_thumbnail() ){//如果有特色縮略圖,則輸出縮略圖地址
$thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'thumbnail');
//其中full可以修改的,可以為thumbnail, medium, large or full(分別代表最小的縮略圖、中等、大和原始尺寸)
$post_thumbnail_src = $thumbnail_src [0];
} else {//如果沒有設置特色縮略圖,則輸出第一張圖片為特色縮略圖
\t$post_thumbnail_src = '';
\tob_start();
\tob_end_clean();
\t$output = preg_match_all('/<img.>/i', $post->post_content, $matches);
\t$post_thumbnail_src = $matches [1] [0]; //獲取該圖片 src
\tif(empty($post_thumbnail_src)){\t//如果日誌中沒有圖片,則顯示隨機圖片
\t\t$random = mt_rand(1, 10);//根據實際準備的圖片數量修改
\t\techo get_bloginfo('template_url');
\t\techo '/images/pic/'.$random.'.jpg';//根據實際情況修改圖片路徑
\t\t//如果日誌中沒有圖片,則顯示默認圖片。我用的是隨機顯示,所以把下面一行的方法註釋掉了
\t\t//echo '/images/default_thumb.jpg';
\t}
};
echo $post_thumbnail_src;
}/<img.>/<code>

邏輯是如果設置了特色圖像則輸出特色圖像,如果沒有設置特色圖像則設置第一張圖片為特色圖像,如果文章連圖片也沒有,則顯示隨機圖像為特色圖像或者顯示一張默認圖片為特色圖像(二選一)。

之前說了,並不是所有的第一張圖片都適合作為特色圖像,所以,我用的邏輯是:如果設置了特色圖像則輸出特色圖像,如果沒有設置,則顯示隨機圖像為特色圖像。把代碼中的這段去掉就可以了。

<code>$post_thumbnail_src = '';
\tob_start();
\tob_end_clean();
\t$output = preg_match_all('/<img.>/i', $post->post_content, $matches);
\t$post_thumbnail_src = $matches [1] [0]; //獲取該圖片 src/<img.>/<code>

然後在需要的地方調用即可:

<code><?php the_title(); ?>/<code>


分享到:


相關文章: