get_attached_file()


WordPressのget_attached_file()関数は、指定された添付ファイルのファイルパスを取得するために使用されます。この関数は、添付ファイルのIDを引数として受け取り、その物理パスを返します。

構文

get_attached_file( int $attachment_id, bool $unfiltered = false );

引数の説明

  • $attachment_id (int) — 添付ファイルのID。
  • $unfiltered (bool) — デフォルトではフィルターされたパスを返しますが、trueを設定すると未加工のパスを返します。

例1: 添付ファイルのパスを取得

以下のコードは、添付ファイルのパスを取得して出力します。

<?php
$attachment_id = get_post_thumbnail_id( get_the_ID() );
echo get_attached_file($attachment_id);
?>

例2: 未加工のパスを取得

未加工のファイルパスを取得する場合の例です。

<?php
$attachment_id = get_post_thumbnail_id( get_the_ID() );
echo get_attached_file($attachment_id, true);
?>

例3: ファイルが存在するか確認

取得したパスを使ってファイルが存在するかを確認します。

<?php
$attachment_id = get_post_thumbnail_id( get_the_ID() );
$file_path = get_attached_file($attachment_id);
if ( file_exists($file_path) ) {
    echo 'ファイルは存在します。';
}
?>

例4: 複数の添付ファイルのパスを取得

投稿に関連付けられたすべての添付ファイルのパスを取得します。

<?php
$attachments = get_posts(array(
    'post_type' => 'attachment',
    'posts_per_page' => -1,
    'post_parent' => get_the_ID()
));
foreach ($attachments as $attachment) {
    echo get_attached_file($attachment->ID) . '<br>';
}
?>

例5: パスを基にファイルをダウンロード

指定された添付ファイルをダウンロードするリンクを生成します。

<?php
$attachment_id = get_post_thumbnail_id( get_the_ID() );
$file_path = get_attached_file($attachment_id);
if ( file_exists($file_path) ) {
    $file_url = wp_get_attachment_url($attachment_id);
    echo '<a href="' . $file_url . '" download>ダウンロード</a>';
}
?>

注意点

  • この関数は、添付ファイルIDが正しい場合のみ動作します。不正確なIDを指定するとエラーが発生する可能性があります。
  • 未加工のパスを取得する場合は、十分な注意を払い、パスを公開しないようにしてください。

関連機能: