WordPress | 本文内最初の画像を取得する

アイキャッチ画像を設定していない場合など、記事の本文内のソースから最初の画像URIを取得するサンプルです。

本文内の最初の画像を取得する

以下のサンプルコードを functions.php 等に追加して記事一覧ページなどのテンプレート内で、$img_uri = custom_get_first_img( $post_id ); を追加して画像URIを取得します。

/**
 * 本文内の最初の画像を取得する
 */
function custom_get_first_img( $post_id )
{
    if ( !$post_id ) { return false; }

    // 投稿データ取得
    $post = get_post($post_id);

    $img_uri = '';

    // 最初にマッチした画像を取得する
    preg_match_all("/<img[^>]+src=[\"'](s?https?:\/\/[\-_\.!~\*'()a-z0-9;\/\?:@&=\+\$,%#]+\.(jpg|jpeg|png|gif))[\"'][^>]+>/i", $post->post_content, $matches);

    $img_uri = $matches[1][0];
    
    if(empty($img_uri)){

   // 空の値かダミー画像のURIを設定
      $img_uri = '';
    }

    // 
    return $img_uri;
  }

動作環境情報

"エックスサーバー" スタンダード(旧X10)
"PHP" 7.4.33
"MariaDB" 10.5
"WordPress" 6.1.1

コメント

タイトルとURLをコピーしました