WordPress :如何擷取文章內第一張圖片作為縮圖?
1. 抓取文章第一張圖片
而抓取文章第一張圖片的方式,也非常簡單,只要寫成一個函式就可以達成。另外,這個函式會先判斷目前有沒有設定特色圖片,沒有設定才會去抓第一張圖片,有設定就會直接回傳特色圖片路徑。把以下代碼寫入function.php
1 2 3 4 5 6 7 8 9 10 11 12 |
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去指定何篇文章
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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判斷式吧!
1 2 3 4 5 6 7 8 9 |
<?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; ?> |
成功了~謝謝您的協助與分享
自動引用通知: 修改Theme,使用第一張圖片的縮圖 – A man's purpose
自動引用通知: 解決AMP找不到特色圖片的錯誤 not foundfeature image url (使用Google推薦外掛AMP for WP – Accelerated Mobile Pages for WordPress) | 易春木