wordpress 快速設定 文章的第一張圖片為縮圖

WordPress :如何擷取文章內第一張圖片作為縮圖?

1. 抓取文章第一張圖片

而抓取文章第一張圖片的方式,也非常簡單,只要寫成一個函式就可以達成。另外,這個函式會先判斷目前有沒有設定特色圖片,沒有設定才會去抓第一張圖片,有設定就會直接回傳特色圖片路徑。把以下代碼寫入function.php

function get_feature_image(){  
    global $post, $posts;  $first_img = '';
    if ( has_post_thumbnail() ) {
        $first_img  = wp_get_attachment_url( get_post_thumbnail_id() );
    } else {
        ob_start();
        ob_end_clean();
        $output = preg_match('/<*img[^>]*src*=*["\']?([^"\']*)/i', $post->post_content, $matches);
        $first_img = $matches[1];
    }
    return $first_img;
}

而抓取第一張圖片的方式其實很簡單,我們只要用 PHP 的 preg_match 用正規表達式去比對就可以了。另外,因為我們只要第一張圖片,所以不使用 preg_match_all。

改良版:
可以傳post_id去指定何篇文章

//抓取文章第一張圖片
function get_feature_image($post_id = null){  
    global $post, $posts;  $first_img = '';
    if($post_id)
	$post = get_post( $post_id );
	
    if ( has_post_thumbnail() ) {
        $first_img  = wp_get_attachment_url( get_post_thumbnail_id() );
    } else {
        ob_start();
        ob_end_clean();
        $output = preg_match('/<*img[^>]*src*=*["\']?([^"\']*)/i', $post->post_content, $matches);
        $first_img = $matches[1];
    }
    return $first_img;
}

2. 若無特色圖片就用第一張圖片吧
去找index.php 或是其他取用到feature picture的地方, 加入else判斷式吧!

 <?php if ( has_post_thumbnail() ) : ?>
   <div class="thumbnail">
     <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail('pingraphy-home-thumbnail'); ?></a>
   </div>
 <?php else : ?>
   <div class="thumbnail">
     <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><img src="<?php echo get_feature_image(); ?>"></a>
   </div> 
 <?php endif; ?>

發表迴響