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

wordpress.stackexchange https://wordpress.stackexchange.com/questions/477

  •  16-10-2019
  •  | 
  •  

質問

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

$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() そしてa substr()wp_get_attachment_url())そして電話してください filesize() しかし、それは厄介なように思えます、そして、私はWordPressに組み込まれた方法があるかどうか疑問に思っています。

役に立ちましたか?

解決

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

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

他のヒント

これを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');

私はします:

$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(), ファイルサイズ(), size_format()

ノート : あなたを定義します $attachment_id

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

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

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

人間の読み取り可能なファイルサイズを取得するためのより簡単なソリューションがあります。

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

echo $attachment_meta['filesizeHumanReadable'];

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

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

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

これ ではないかもしれない 画像とビデオの場合になります。

ライセンス: CC-BY-SA帰属
所属していません wordpress.stackexchange
scroll top