WordPressの投稿に添付されている画像の枚数などの情報を取得する方法

WordPressの投稿に画像などを追加したい場合は「メディアを追加」ボタンを押して、アップロードして本文中のどこかに添付するじゃないですか。

「メディアを追加」ボタン

insert_image_add_class01

この投稿に「添付されている画像の枚数」を取得する機会がありました。似たようなことをされたい、という場合はご参考ください。

WordPressの投稿に添付されている画像の枚数などの情報を取得する方法

例えば、現在表示している投稿に添付されている画像の枚数を取得するには、以下のコードでできます。

$attachment_images = get_attached_media( 'image', get_the_ID() );
echo count( $attachment_images );

コードがやっていること

get_attached_media」を使って、現在表示している投稿IDに添付されている画像の情報を取得します。添付されている画像の情報が配列で取得できるので、countを使って画像の枚数を表示しています。

もし「現在表示している投稿IDを取得する方法」について知りたい場合は、以下のページをご参考ください。

「get_attached_media」の第1引数にはmimeタイプ、第2引数には投稿のIDを指定します。この関数を応用すれば、画像以外にも音声や動画ファイルなどの情報も取得できます。その場合は、アップロードを許可しているmimeタイプをお好みで指定すればOKですね。

注意:添付されている画像として認識されないものがあります

「get_attached_media」を使って取得できる画像の情報は、投稿と添付されている画像が紐づいていないと取得できないです。

投稿と画像が紐づいているかどうか確認する方法

いくつかやり方がありますが、主に2つの方法で確認するとわりと理解しやすいと思います。

方法1 投稿画面から確認する

投稿の編集画面から「メディアを追加」ボタンを押します。

insert_image_add_class01

「メディアを挿入」という画面が表示されるので「メディアライブラリ」を選択して「この投稿へのアップロード」を選択します。すると、下のように投稿と紐づいているファイルが確認できます。

wordpress_get_attachment_images_num02png

方法2 ライブラリから確認する

WordPressの管理画面から「メディア」→「ライブラリ」を選択します。

wordpress_get_attachment_images_num00

アップロードされたファイルの一覧が表示されるので、画像がどの記事に紐づいている(アップロードされている)のか確認できます。

wordpress_get_attachment_images_num01

画像が他の投稿と紐づけてあったり、外部のURLから読み込んでいる場合は情報が取得できません。

もし投稿の本文に添付されている画像の情報と、取得した情報に食い違いがある場合は「投稿と画像が紐づいているかどうか」をまずは確認しましょう。

また「投稿に紐づいている・いないに関わらず、画像の枚数を取得したいんだ!」という場合は、正規表現などを使って本文中の画像の要素だけを取得して加工するのも方法の1つだと思います(今回はその方法については省略しますね。要望がありましたら、またの機会で・・・)。

WordPressの不動産プラグインの配布などで有名なねんでぶさんは、下のツイートのようにPHPで正規表現を使って画像の要素を取得されているようですね。

私も自作プラグインの処理の一部として、本文中の画像の要素を取得するときはPHPで正規表現で書くこともあります。

まとめ

この方法の使い所の1つとして、アーカイブページなど投稿の一覧がずらっと並んでいるページで、メインとなるアイキャッチ画像の他にも「まだまだ画像あるよ」ということを表現したい場合には便利だと思います。

また、今回は「画像の枚数」に焦点を絞って書きましたが、取得できる配列の中身を確認すると、添付IDやファイル名などの情報もあります。応用すれば他の用途にも使えますね。

以上、何かのご参考となりましたら嬉しいです。

著者:bouya Imamura