Wordpressで記事のサムネイルに使用する画像としては、アイキャッチを使用するパターンが多いかと思います。
アイキャッチ以外にも、記事内に読み込まれている一番最初の画像を取得したい時があるかと思います。
記事IDを引数にして、アイキャッチがあった時はアイキャッチURLを取得し、記事に画像が入っていた場合は一番最初の画像URLを取得し、画像がなければnoimage用の画像URLを取得する関数は下記の通りです。
/** * 記事IDを引数に記事の画像を取得する関数 * (アイキャッチURL>記事の最初の画像URL>noimage画像URL) * * @param int $id post_id. * @return string $first_img path to image. */ function catch_that_image( $id = null ) { global $post; if ( ! empty( $id ) ) { $post_data = get_post( $id ); } else { $post_data = get_post( get_the_ID() ); } $first_img = ''; if ( has_post_thumbnail( $id ) ) { $first_img = get_the_post_thumbnail_url( $id, 'full' ); } else { ob_start(); ob_end_clean(); if ( $post_data->post_content ) { $output = preg_match_all( '/<img[^>]+?src=[\'"]([^\'"]+)[\'"][^>]*>/i', $post_data->post_content, $matches ); $first_img = $matches[1][0]; } if ( empty( $first_img ) ) { // Defines a default image. $first_img = get_template_directory_uri() . '/images/noimage.png'; } } return $first_img; }
参考にさせていただいたサイトはこちら↓です。
SINCE「WordPressで記事内の最初の画像をアイキャッチ代わりに使う方法」
https://since-inc.jp/blog/4791
上記をカスタマイズして、記事IDを引数として与えることで、指定した記事の画像を取得します。
引数になにも入っていない場合は、現在の記事の画像を取得します。
アイキャッチも画像も入っていない場合はテーマディレクトリ内のnoimage画像のURLを取得しています。