问题描述

我使用以下模板代码来显示附件链接:

$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()wp_get_attachment_url()substr()),并调用 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');

第三种解决方案

要找到通过自定义字段插件添加的文件的大小,我做到了:

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

只需确保将自定义字段的”Return Value” 设置为”File Object” 。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。