WordPress как на ладони

Как получить размер файла из библиотеки файлов в KB, MB?

Здравствуйте, созрел такой вопрос и хотелось бы услвшать его решение, наверняка в WordPress есть уже что-то готовое для этого...

В общем, мне нужно узнать размер файла-картинки и если он превышает указанный мной размер, то производить какие-то действия...

Собственно вопрос озвучен в заголовке: как узнать размер файла-картинки, который находится в медиафайлах WordPress, если у меня есть ID этого файла-картинки.

Спасибо!

1
Гость
7.5 лет назад
  • 0
    Kama9618

    Буквально, только что отвечал на такой же вопрос в комментариях. Но вам спасибо за то что задали его тут.

    Получить размер файла картинки можно так:

    $attach_id = 7358; // ID вложения
    $meta = wp_get_attachment_metadata( $attach_id );
    
    if ( isset( $meta['filesize'] ) )
    	$file_size = $meta['filesize'];
    elseif ( $file = get_attached_file( $attach_id ) )
    	if( file_exists( $file ) )
    		$file_size = filesize( $file );
    
    echo size_format( $file_size ); //> 19 KB
    Ramus 3.9 лет назад

    Привет. Есть Вопрос. Код работает, но хотелось бы для скачиваемых продуктов настроить. Как можно сделать так чтобы, автоматически получать ID вложения а не писать вручную. К примеру есть товар, к нему прикреплен файл... Есть совет? Спасибо большое за ответ.

    Hellion 3.2 года назад

    Проблема в том что в товарах могут быть файлы не из библиотеки а по прямой ссылке. Проще тогда получить размер файла по ссылке.

    //Получаем ссылку на файл
    $file = $product->get_downloads( $post->ID);
    $link = $file->get_file();
    //Далее получаем размер файла в байтах
    $file_open = fopen($link, "r");
    $file_size = 0;
    	while(($str = fread($file_open, 1024)) != null) {
    		$file_size += strlen($str);
    	}
    echo $file_size;

    И соответственно, если в товаре несколько файлов, проходимся циклом по $file.

    artsamateur 5 месяцев назад

    Подскажите, есть вот такой код, как после указания размеров, добавить вес картинки в кб, мб?

        // Выводим каждую картинку из галереи
    	foreach( $pictures as $pic )
    	{
    		$src = $pic->guid;
    		$t = esc_attr( $pic->post_title );
    		$title = ( $t && false === strpos($src, $t)  ) ? $t : '';
    		$caption = ( $pic->post_excerpt != '' ? $pic->post_excerpt : $title );
    		$href = get_permalink($pic->ID);
    		$metadata = wp_get_attachment_metadata($pic->ID);
    		$wh = '';
    		if(!empty($metadata['width']) && !empty($metadata['height'])) {
    			$wh = '' . $metadata['width'] .'x' . $metadata['height'] .'';
    		}
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация