1

我有一个 ACF 字段,它是文件上传。我能够获得附件 ID。但是在我的树枝模板中,我无法输出文件大小,因为这不能通过 ACF 获得。

我发现了一个功能:

$context['filesize'] = (filesize( get_attached_file(the_attachment_id_here))/1000 );

但我真正需要它让它处于树枝循环中。

我在我的模板中尝试过:

 {% for item in posts %} 
{{function(filesize( get_attached_file(item.get_field('pdf').id))/1000 )}}
{% endfor %

但它返回一个错误文件大小未知函数。

任何帮助都会很棒!

4

2 回答 2

2

哦,那是一个讨厌的 -

真正最好的方法是......

首先为您的帖子创建一个自定义类。添加一种方法来进行您正在寻找的获取和转换...

class MyPost extends \Timber\Post {

  function pdf_filesize() {
    $pdf = $this->get_field('pdf');
    //you may need to convert the value of $pdf into an array...
    $file = get_attached_file($pdf['id']);
    return filesize($file) / 1000;
  }
}

然后在您获取帖子的任何地方,使用MyPost...

$context['posts'] = Timber::get_posts(null, 'MyPost');

在树枝文件中...

{% for post in posts %}
  File size is {{ post.pdf_filesize }}
{% endfor %}

如果你只需要破解它...

{% for item in posts %} 
    {{ function(
          'filesize', function(
              'get_attached_file', item.get_field('pdf').id
           )
        ) / 1000 }}
{% endfor % }
于 2017-03-28T01:59:30.327 回答
1

Avar_dump表明文件大小是

echo '<pre>';
    var_dump( $file );
echo '</pre>';

输出文件大小

$file = get_field('file'); 
$filesize = $file['filesize'];
$filesize = size_format($filesize, 2);
于 2021-03-19T13:13:09.377 回答