添付ファイルのサイズを取得するにはどうすればよいですか?


35

次のテンプレートコードを使用して、添付リンクを表示しています。

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => $main_post_id
);

$attachments = get_posts($args);

foreach ($attachments as $attachment)
{
    the_attachment_link($attachment->ID, false);
}

しかし、リンクの後、ファイルのサイズを表示する必要があります。これどうやってするの?

ファイルのパス(wp_upload_dir()およびsubstr()wp_get_attachment_url())を決定して呼び出すことfilesize()ができると思いますが、それは厄介なようで、WordPressにメソッドが組み込まれているのではないかと思っています。


興味深いことに、バックエンドには、ファイルのサイズを詳細またはリストに表示する機能はありません。チケット#8739
hakre

回答:


43

私の知る限り、WordPressにはこのために何も組み込まれていません。

filesize( get_attached_file( $attachment->ID ) );


ああ-いじりまわすwp_upload_dir()などよりずっと良く見える!
ボビージャック

1つの投稿の添付ファイルのサイズのみを取得する必要があります。post_parentでget_the_ID()を使用しました。しかし、使いません。
-KarSho

10

functions.phpでこれを使用して、ファイルサイズを読みやすい形式で表示しました。

function getSize($file){
$bytes = filesize($file);
$s = array('b', 'Kb', 'Mb', 'Gb');
$e = floor(log($bytes)/log(1024));
return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));}

そして、私のテンプレートで:

echo getSize('insert reference to file here');

8
新しい関数を作成する必要はありません。WPには2つのコアが組み込まれています。size_format()およびwp_convert_bytes_to_hr()
ブレイディ

8
wp_convert_bytes_to_hrのように見える()は廃止されました)(size_formatの賛成で
davemac


3

カスタムフィールドプラグインを介して追加されたファイルのサイズを見つけるために、私はこれをしました:

$fileObject = get_field( 'file ');
$fileSize   = size_format( filesize( get_attached_file( $fileObject['id'] ) ) );

カスタムフィールドの[戻り値]を[ファイルオブジェクト]に設定してください。


3

人間が読めるファイルサイズを取得するための簡単な解決策があります。

$attachment_id  = $attachment->ID;
$attachment_meta = wp_prepare_attachment_for_js($attachment_id);

echo $attachment_meta['filesizeHumanReadable'];

すべてのためのwp_ funktionがあります
;

受け入れられる答えである必要があります
user1676224

1

同じものを探していたところ、このWordPress組み込みソリューションが見つかりました。

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => $main_post_id
);

$attachments = get_posts($args);

foreach ($attachments as $attachment)
{
    $attachment_id = $attachment->ID;
    $image_metadata = wp_get_attachment_metadata( $attachment_id );
    the_attachment_link($attachment->ID, false);
    echo the_attachment_link['width'];
    echo the_attachment_link['height'];
}

でもっと見る wp_get_attachment_metadata()


2
問題は、画像のサイズではなく、バイト数でのファイルのサイズです。
11

ドー、私はそれを読んで逃した。:-)
Vayu

1

少なくともオーディオの場合、ファイルサイズは「メタデータ」として保存されます。

$metadata = wp_get_attachment_metadata( $attachment_id );
echo $metadata['filesize'];

これ、画像やビデオの場合には当てはまらない可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.