見出し画像

【WordPress】記事内の最初の画像URLを取得する方法【PHP】

※ これは別noteアカ(@fukuro_press)からの移転記事です。

WordPressでページの最初に出てくる画像(のURL)を取得したいって思ったことはありませんか?

私の場合はどうしても記事トップに出てくるアイキャッチ画像をTwitterカードの画像として使いたかったのでどうすれば取得できるのかと調べていたらいい方法が見つかりました。

そこでここでは記事の一番最初に表示されているアイキャッチ画像などのURLをPHPで取得する方法を紹介します。

とりあえず取得する方法

記事トップの画像URLを取得するとか難しそうと思いがちですが意外とやってみると簡単で、次のようなPHPコードを呼び出すだけです。

 $first_post_image_url = '';
 preg_match('/<img.+src=[\'"]([^\'"]+)[\'"].*>/',
                 $post->post_content, $matches);
 $first_post_image_url = $matches[1];

preg_match関数内で正規表現を使って記事内のコンテンツ($post->post_contentのこと)の中で最初に現れるimgタグを探し、最初にマッチしたサブパターン(正規表現内で()で囲まれたパターンのこと)を取得することで画像URLが簡単に手に入ります。

そして取得した画像URLはあとは好きなように利用できます。

とても簡単ですね。

関数化してみる

では次にいちいち画像URLを取得するたびにこのコードを書くのは面倒なので関数化して再利用できるようにします。

次が記事トップに出てくる画像URLを取得する関数コードです。

function get_first_post_image_url() {
  if(!is_single() && !is_page()) return;
 
  global $post;
  preg_match('/<img.+src=[\'"]([^\'"]+)[\'"].*>/', 
             $post->post_content, $matches);
  return $matches[1];
}

個別投稿ページと固定ページだけでしか画像URLは取得する必要がないのでそれ以外のページではreturnしています。

また投稿データを取得するのに$postを使いますが、関数内なのでglobalをつけて利用できるようにしています。


取得した画像URLはメタタグに書き込んだり、その他色々な使い方ができるので便利です。

以上WordPressで記事の最初に出てくる画像URLをPHPを使って取得する方法について紹介しました。

プロフィール

普段はFukuro-PressというサイトでWordPressやサイト構築術について書いています。NoteではWordPress術に加えてさらに技術的な内容を配信していきます、どうぞよろしく。

この記事はいかがでしたか?もし活動を支援していただけるならサポートをお願いいたします m(__)m。