アイキャッチ画像を設定していない場合など、記事の本文内のソースから最初の画像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
コメント