첨부 파일의 크기는 어떻게 구합니까?


34

첨부 파일 링크를 표시하기 위해 다음 템플릿 코드를 사용하고 있습니다.

$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()하지만 그 혼란을 것, 그리고 워드 프레스에 내장하는 방법이 있다면 난 그냥 궁금 해서요.


흥미롭게도 백엔드에는 파일의 크기를 세부적으로나 목록으로 표시하는 기능이 없습니다. 티켓 # 8739
hakre

답변:


42

내가 아는 한 WordPress에는이 기능이 내장되어 있지 않습니다.

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


아-그것은 wp_upload_dir()등을 뒤섞는 것보다 훨씬 좋아 보입니다 !
Bobby Jack

게시물 첨부 파일 크기는 하나만 가져와야합니다. post_parent에서 get_the_ID ()를 사용했습니다. 그러나 아무 소용이 없습니다.
KarSho

10

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');

8
새로운 기능을 만들 필요가 없습니다. WP에는 두 가지 핵심 기능이 내장되어 있습니다. size_format()wp_convert_bytes_to_hr()
브래디

8
wp_convert_bytes_to_hr 같은 외모 ()는 현재 사용되지 않습니다 size_format () 찬성
davemac

5

난 그럴거야 :

$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


3

사용자 정의 필드 플러그인을 통해 추가 된 파일의 크기를 찾으려면 다음과 같이하십시오.

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

사용자 정의 필드의 "Return Value"를 "File Object"로 설정하십시오.


3

사람이 읽을 수있는 파일 크기를 얻는 더 쉬운 솔루션이 있습니다.

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

echo $attachment_meta['filesizeHumanReadable'];

를 theres wp_ funktion ;-) 모두를위한
토마스 Fellinger

허용되는 답변이어야합니다
user1676224

1

나는 똑같은 것을 찾고이 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()


2
문제는 이미지 크기가 아닌 바이트 수와 같은 파일 크기에 관한 것입니다.
Rarst

Doh, 나는 그것을 읽은 것을 그리워한다. :-)
Vayu

1

오디오의 경우 파일 크기는 "메타 데이터"로 저장됩니다.

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

이것은 하지 않을 수 있습니다 이미지 및 비디오의 경우합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.