WordPressで「添付ファイルのページ」のURLを取得する

こんにちは、katori@xxbicottです。
今回は自分用の覚書き。
掲題の通り、WordPressでメディアそのもののURLではなく、メディアをアップロードする際に自動生成される画像のページ(WordPress上では”添付ファイルのページ”、”個別添付ファイルページ”とも)を取得する方法についてです。

この間調べた際に”添付ファイルのページ”の表現揺れでちょっと混乱したので、さっくり書き方を残したいと思います。

添付ファイルのページのURL取得

添付ファイルのページは「get_attachment_link(メディアID)」で取得することができます。

//サイトの全添付ファイルのページのURLを出力する
$myposts = get_posts('post_type=attachment&posts_per_page=-1');
if (have_posts()):
	foreach($myposts as $post) :
		echo get_attachment_link( $post->ID ).'<br>';
	endforeach;
endif;

post_type=attachmentで添付ファイル(メディア)のデータ群を取得し、get_attachment_linkに添付ファイル(メディア)IDを渡すことでファイルページのURLを取得します。

また、メディアそのもののURLの取得はこちら。
wp_get_attachment_url(メディアID)」を使います。

$myposts = get_posts('post_type=attachment&post_mime_type=image&posts_per_page=-1');
if (have_posts()):
	foreach($myposts as $post) :
		echo wp_get_attachment_url( $post->ID ).'<br>';
	endforeach;
endif;

wp_get_attachment_urlに添付ファイル(メディア)IDを渡すことで添付ファイルのフル URI を取得する関数になります。

どちらも渡すのは添付ファイル(メディア)IDなのがポイントですね。

感想

ちなみに、今回はメディア挿入時に「添付ファイルのページ」へリンク入れていたこと、noindexをその時入れてなかったことから自動出力&インデックスされてしまったため、それを削除すべく洗い出すために使用しました。

さほど使う機会はないかもですが、今回のようなケースはちょこちょこありそうなので覚書きまで。

以上、WordPressで「添付ファイルのページ」のURLを取得する方法でした!

参考