
目次
wp_attachment_is_image()とは?
wp_attachment_is_image()
は、WordPressにおける**添付ファイル(attachment)**が「画像ファイル」であるかどうかを判定するための関数です。主にテーマやプラグインで、投稿に添付されたファイルが画像かどうかで処理を分けたいときに使われます。
wp_attachment_is_image()の基本構文
wp_attachment_is_image( int $post_id )
wp_attachment_is_image()のパラメータ
$post_id
(int):判定対象となる添付ファイルの投稿ID(=attachment ID
)
wp_attachment_is_image()の戻り値
true
:その添付ファイルが画像である場合false
:画像ではない場合(例:PDF、動画、音声など)
wp_attachment_is_image()の使用例(基本的な使い方)
$attachment_id = get_post_thumbnail_id(); // アイキャッチ画像のIDを取得
if ( wp_attachment_is_image( $attachment_id ) ) {
echo 'この添付ファイルは画像です';
} else {
echo 'この添付ファイルは画像ではありません';
}
添付ファイルとは?
WordPressでは、投稿や固定ページにメディア(画像・PDF・音声・動画など)をアップロードすると、それぞれに「添付ファイル(attachment post type)」としてのエントリーが作成されます。
これにより、ファイルのメタデータ管理やテンプレート処理が柔軟に行えるようになっています。
wp_attachment_is_image()の判定の仕組み
内部的には、以下のような流れで「画像かどうか」を判定しています:
function wp_attachment_is_image( $post_id ) {
$post = get_post( $post_id );
if ( ! $post ) {
return false;
}
return 0 === strpos( get_post_mime_type( $post ), 'image/' );
}
解説
get_post()
:投稿IDから投稿オブジェクトを取得get_post_mime_type()
:その添付ファイルの MIMEタイプを取得(例:image/jpeg
)strpos(..., 'image/') === 0
:MIMEタイプの先頭が"image/"
ならtrue
(つまり画像)
→ MIMEタイプが image/jpeg
, image/png
, image/gif
, image/webp
, image/svg+xml
などのときに true
になります。
wp_attachment_is_image()の応用的な使い方
1. ギャラリー表示のフィルタリングに利用
$args = [
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'inherit',
'post_parent' => get_the_ID(),
];
$attachments = get_posts( $args );
foreach ( $attachments as $attachment ) {
if ( wp_attachment_is_image( $attachment->ID ) ) {
echo wp_get_attachment_image( $attachment->ID, 'thumbnail' );
}
}
→ 投稿に添付された「画像ファイル」だけを一覧表示
2. PDF・画像などの種別で処理を分ける
$attachment_id = 123;
if ( wp_attachment_is_image( $attachment_id ) ) {
echo '画像として表示します';
} else {
$mime = get_post_mime_type( $attachment_id );
if ( $mime === 'application/pdf' ) {
echo 'PDFファイルです';
} else {
echo 'その他のファイル形式です';
}
}
wp_attachment_is_image()の類似・関連する関数との比較
関数名 | 用途 | 補足 |
---|---|---|
wp_attachment_is_image() | 添付ファイルが画像か判定 | MIMEタイプが image/ かどうか |
get_post_mime_type() | 添付ファイルの MIMEタイプ取得 | 画像以外の詳細判定にも使える |
wp_get_attachment_image() | 画像添付ファイルの HTML 出力 | サムネイルやサイズ指定が可能 |
wp_get_attachment_metadata() | メディアのメタデータ取得 | 幅・高さなども取得可能 |
wp_attachment_is_image()のよくある使用シーン
シーン | 内容 |
---|---|
メディア一覧で画像のみ表示 | 添付ファイルのループで画像だけを抽出 |
カスタムテンプレートで画像の有無をチェック | 画像がなければ代替処理を行う |
投稿に添付されたファイルの種類で処理分岐 | PDF や画像を別のレイアウトで表示 |
メディアアップロード時のバリデーション(プラグイン内) | 特定の MIMEタイプのみ許可したいケース |
wp_attachment_is_image()の注意点と補足
- 投稿IDが必要:この関数は**添付ファイルの投稿ID(attachment ID)**を前提として動作します。ファイルURLやパスでは判定できません。
- サニタイズは別途必要:ファイルの種類が判定できても、出力に関しては
esc_url()
やesc_attr()
などの適切なエスケープが必要です。 - SVGは注意が必要:SVG は MIME タイプとして
image/svg+xml
が使われますが、WordPressの標準設定ではアップロード不可なため、別途upload_mimes
フィルターなどが必要です。
wp_attachment_is_image()のまとめ
項目 | 内容 |
---|---|
関数名 | wp_attachment_is_image() |
主な用途 | 添付ファイルが画像かどうかの判定 |
引数 | 添付ファイルの投稿ID(int) |
戻り値 | true (画像) / false (それ以外) |
判定方法 | MIMEタイプが image/ で始まるかどうか |
主な活用シーン | ギャラリー表示、画像専用テンプレートの条件分岐など |
関連関数 | get_post_mime_type() , wp_get_attachment_image() , wp_get_attachment_metadata() |
さらに実践的なTips
アイキャッチが画像以外の場合のエラー回避例:
$thumb_id = get_post_thumbnail_id();
if ( $thumb_id && wp_attachment_is_image( $thumb_id ) ) {
echo get_the_post_thumbnail( get_the_ID(), 'medium' );
} else {
echo '<img src="/noimage.png" alt="代替画像">';
}
wp_attachment_is_image()
は、シンプルながらも非常に実用的な関数です。画像専用レイアウトや動的なギャラリー生成など、カスタマイズの幅が広がる場面で欠かせない存在です。画像に関連する処理を効率化するために、ぜひ覚えておきたい基本関数のひとつです。