t.todua
  • 0
Новичок

Как узнать размер вложенного файла?

  • 0

Я использую следующий код шаблона для отображения ссылок на вложения:

$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() и a substr() из wp_get_attachment_url() ) и вызвать filesize(), но это кажется беспорядочным, и мне просто интересно, есть ли метод, встроенный в WordPress.

Share
  1. Интересно, что в бэкенде нет функционала для отображения размера файла ни в деталях, ни в списке. Билет №8739

    • 0
  2. Насколько я знаю, в WordPress для этого ничего не встроено, я бы просто сделал:

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

    • 0
  3. Я бы сделал :

    $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(), размер файла(), size_format()

    Примечание: определите свой$attachment_id

    • 0
  4. Я использовал это раньше в 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');
    
    • 0
  5. Есть более простое решение, чтобы получить удобочитаемый размер файла.

    $attachment_id  = $attachment->ID;
    $attachment_meta = wp_prepare_attachment_for_js($attachment_id);
    
    echo $attachment_meta['filesizeHumanReadable'];
    
    • 0
  6. Чтобы узнать размер файла, добавленного через плагин настраиваемых полей, я сделал следующее:

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

    Просто убедитесь, что вы установили «Возвращаемое значение» настраиваемого поля в «Файловый объект».

    • 0
  7. Я искал то же самое и нашел это встроенное решение 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()

    • 0
  8. По крайней мере, для аудио размер файла сохраняется как «метаданные».

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

    Это может быть не так для изображений и видео.

    • 0
  9. Получить размер файла изображения в wordpress:

    $query_images_args = array(
        'post_type' => 'attachment',
        'post_mime_type' => 'image',
        'post_status' => 'inherit',
        'posts_per_page' => 10,
    );
    
    $query_images = new WP_Query($query_images_args);
    
    foreach ($query_images->posts as $image) {
        $img_atts = wp_get_attachment_image_src($image->ID, $default);
        $img = get_headers($img_atts[0], 1);
        $size = $img["Content-Length"]/1024;
        echo round($size);
    
    }
    
    • 0

Оставить ответ

You must login to add an answer.