it-swarm-eu.dev

Jak získám velikost souboru přílohy?

Pro zobrazení odkazů na přílohy používám následující kód šablony:

$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);
}

ale po odkazu musím zobrazit velikost souboru. Jak to mohu udělat?

Hádám, že jsem mohl určit cestu k souboru (přes wp_upload_dir() a substr() z wp_get_attachment_url()) a zavolat filesize(), ale zdá se, že je to chaotický, a já jen přemýšlím, jestli je do WordPressu zabudována metoda.

34
Bobby Jack

Pokud vím, WordPress nemá nic pro to, já bych jen:

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

41
Joe Hoyle

Použil jsem to dříve v functions.php k zobrazení velikosti souboru ve snadno čitelném formátu:

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

A pak v mé šabloně:

echo getSize('insert reference to file here');
10
davemac

Já bych udělal:

$attachment_filesize = filesize( get_attached_file( $attachment_id ) );

Nebo s čitelnou velikostí jako 423.82 KB

$attachment_filesize = size_format( filesize( get_attached_file( $attachment_id ) ), 2 );

Odráží: get_attached_file () , filesize () , size_format ()

Poznámka: Definujte $attachment_id

5
l2aelba

Je zde jednodušší řešení, jak získat velikost souborů čitelných lidem.

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

echo $attachment_meta['filesizeHumanReadable'];
3
Zoltan Kiraly

Chcete-li zjistit velikost souboru přidaného pomocí pluginu vlastních polí, udělal jsem toto:

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

Ujistěte se, že jste nastavili vlastní hodnotu pole "Return Value" na hodnotu "File Object".

U zvuku je velikost souboru uložena jako "metadata".

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

Toto nemusí platí pro obrázky a video.

1
henrywright

Hledal jsem stejné a našel tento WordPress vestavěné řešení.

$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'];
}

Více na adrese wp_get_attachment_metadata()

1
Vayu