web-dev-qa-db-ja.com

添付ファイルのサイズはどのようにしてわかりますか?

添付ファイルのリンクを表示するために、次のテンプレートコードを使用しています。

$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に組み込まれたメソッドがあるかどうか疑問に思います。

34
Bobby Jack

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

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

41
Joe Hoyle

私は以前に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');
10
davemac

やります:

$attachment_filesize = filesize( get_attached_file( $attachment_id ) );

あるいは423.82 KBのような読みやすいサイズで

$attachment_filesize = size_format( filesize( get_attached_file( $attachment_id ) ), 2 );

参照: get_attached_file()filesize()size_format()

注: あなたの$attachment_idを定義してください

5
l2aelba

人間が判読できるファイルサイズを得るためのもっと簡単な解決策があります。

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

echo $attachment_meta['filesizeHumanReadable'];
3
Zoltan Kiraly

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

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

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

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

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

これは ではないかもしれません 画像やビデオの場合は当てはまります。

1
henrywright

私は同じものを探していて、この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() でもっと見る

1
Vayu