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判斷式吧!
沒有留言:
張貼留言