【WordPress】記事中で使用している画像を1つ取得する
問題
WordPressで、記事中で使用している画像を1つ取得して、OGP(Open Graph Protocol)のmetaタグ(property=”og:image”)に利用したり、サムネイル表示などに使いたい。
答え
投稿記事中に使っている画像の中からひとつ、代表で取り出したいことがある。
「一番大きい画像」などの判断は難しいが、「最初に使っている画像」でよかったらさほど難しくない。
ヘッダー(header.php)で、以下のように書いて、代表とする画像を取得して、OGP設定に使ったりできる。
<?php //デフォルトの画像もあっていいでしょう $og_image = 'https://www.softel.co.jp/img/favicon.png'; //単独の記事のとき if (is_singular()) { //単独の記事なのでwhileは1周しかしないはずですが if (have_posts()) : while (have_posts()) : the_post(); //投稿記事のHTMLから正規表現で1つ目のimgタグのsrc属性を取得 if (preg_match('|<img.*?src="(.*?)"|', $post->post_content, $matches)) { //もし記事中に画像があればここで代入される $og_image = $matches[1]; } break; endwhile; endif; //念のため巻き戻しておいた方がよいでしょう rewind_posts(); } ?> <!DOCTYPE html> <html> <!-- 以下HTML出力へ。$og_imageに画像のURLが入っているはず。 --> <meta property="og:image" content="<?php echo $og_image; ?>">
コメント