it-swarm-tr.com

Bir eklemeyi alabilir nasıl alabilirim?

Ek bağlantılarını görüntülemek için aşağıdaki şablon kodunu kullanıyorum:

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

ancak bağlantıdan sonra dosyanın boyutunu görüntülemem gerekiyor. Bunu nasıl yapabilirim?

Sanırım dosyanın yolunu (wp_upload_dir() ve substr() __ wp_get_attachment_url() __ yoluyla) belirleyebilir ve filesize()'yi çağırabilirim ancak bu karışık görünüyor ve sadece WordPress'te yerleşik bir yöntem olup olmadığını merak ediyorum.

34
Bobby Jack

Bildiğim kadarıyla, WordPress'in bunun için yerleşik bir şeyi yok.

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

41
Joe Hoyle

Bu dosyayı daha önce kolayca okunabilir bir biçimde görüntülemek için daha önce functions.php dosyasında kullandım:

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

Ve sonra şablonumda:

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

Yaparım:

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

Veya 423.82 KB gibi okunabilir boyutta

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

Refs: get_attached_file () , dosya boyutu () , size_format ()

Not: $attachment_id kodunuzu tanımlayın

5
l2aelba

İnsan tarafından okunabilen dosya boyutları elde etmek için daha kolay bir çözüm var.

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

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

Özel alanlar eklentisi ile eklenen bir dosyanın boyutunu bulmak için şunu yaptım:

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

Özel alanın "Dönüş Değeri" ni "Dosya Nesnesi" olarak ayarladığınızdan emin olun.

En azından ses için, dosya boyutu "meta veri" olarak kaydedilir.

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

Bu olmayabilir görüntüler ve videolar için geçerli olabilir.

1
henrywright

Aynı şeyi arıyordum ve bu WordPress yerleşik çözümünü buldum.

$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() 'da daha fazlasını görün

1
Vayu