2016/10/04

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){ //傳入post_id 參數去指定何篇文章    global $post, $posts; $first_img = '';    if($post_id)    $post = get_post( $post_id );  //可以傳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判斷式吧!

 

沒有留言:

張貼留言