I’m using the following template code to display attachment links:
$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);
}
but after the link I need to display the file’s size. How can I do this?
I’m guessing I could determine the file’s path (via wp_upload_dir()
and a substr()
of wp_get_attachment_url()
) and call filesize()
but that seems messy, and I’m just wondering if there’s a method built into WordPress.
As far as I know, WordPress has nothing built in for this, I would just do:
filesize( get_attached_file( $attachment->ID ) );
I would do :
Or with readable size like
423.82 KB
Refs :
get_attached_file(),
filesize(),
size_format()
Note : Define your
$attachment_id
I have used this before in functions.php to display the file size in an easily readable format:
And then in my template:
There’s an easier solution, to get human readable file sizes.
To find the size of a file added through the custom fields plugin, I did this:
Just make sure you set the custom field’s “Return Value” to “File Object”.
I was looking for the same and found this WordPress built-in solution.
See more at
wp_get_attachment_metadata()
For audio at least, the file size is saved as “metadata”.
This may not be the case for images and video.
Get image file size in wordpress:
Simple function to get attachment file size by attachment id, similar to another answer here but with a little error checking. There is also an additional parameter to specify the number of decimal points to return:
For example, say I have an attachment ID of 99:
tm_get_attachment_size(99, 1)
would return ‘1.4 MB’.