WordPressで任意の投稿から関連する画像をすべて取得する

私がWordPressサイトを作る時によく使っている独自の処理に「特定の投稿に関連する画像をすべて取得する」という関数がある。指定した投稿に設定されているサムネイル(アイキャッチ)画像、添付ファイルとしての画像、直接記事内に貼り付けた画像を一括で取得してくれる関数だ。

例えば、記事一覧などのアーカイブコンテンツを作成する際に、該当記事に画像が含まれていればそれをサムネイルとして表示させたり、独自のギャラリーを作成する時などに利用できる。

毎度サイト作る時に、以前作ったテーマからこの関数を引っ張り出して再利用していたのだが、面倒なので、ここにTIPSとしてナレッジ化しておこうかと思う。

使い方は、テーマのfunctions.phpなどテンプレート内にて、

──として使う。画像が取得できた場合、戻り値として画像種別ごとの画像パスの配列が返ってくる。もし投稿に画像がない場合は真偽値のfalseが返る。

取得できる画像の種別としては、

  • thumbnails ─ 投稿に設定されているアイキャッチ画像
  • attachments ─ 投稿に貼り付けられたメディアのうち添付ファイルの形式が画像のもの
  • embeds ─ 投稿に<img>タグで貼り付けられたすべての画像(外部サイトの画像も含む)

──となっている。

また、引数として特定の投稿IDや、取得したい画像種別を指定できる。

例えば、投稿IDが154番の投稿から画像を取得したい場合:

また、画像種別thumbnailsのみを取得対象にしたい場合:

さらに複合条件も指定可能:

何気にこの関数、結構重宝するので、もしよかったら使ってみてください。

久々、WordPressの小ネタでした。

Leave a Reply

Your email address will not be published.