WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

Размер галереи — килобайт, мегабайт

Есть посты состоящие чисто из галереи и имеющие записи типа [gallery_ ids="271,272,273,274,275"]

код вывода размера отдельной картинки есть, а как посчитать суммарный размер всех загруженных изображений в галерею?

Пока вопрос не осваивал, если освою отпишусь, а так жду овета, может кто-то сталкивался и ответит ранее чем я найду (не найду) на просторах интернета.

0
kolshix104 8 месяцев назад
  • 1
    Kama4477

    Тут много вариантов. Суть одна. Нужно получить все ID картинок, потом получить пути до этих картинок и посчитать размер каждой и суммировать все это.

    Функции которые пригодятся:

    Получим размер одной картинки в байтах:

    filesize( get_attached_file( ID_картинки ) );

    Теперь тебе остается все это собрать в рабочий код и выложить его сюда smile

    --

    Готовый код из коммента ниже:

    <?php
    /* суммарный размер всех изображений галереи for me Kolshix */
    	$gallery     = get_post_galleries( $post->ID, false );   // Получить все id вложенных файлов  (можно и get_post_gallery)
    	$gallery     = $gallery[0];             // Взять нужную ячейку массива (так нужно в моем случае)
    	$gallery_ids = explode(',', $gallery['ids']);       // Извлечь массив id
    
    	$s = 0;
    	foreach( $gallery_ids as $gallery_id ){
    		$s += filesize( get_attached_file( $gallery_id ) ); // Сложить размер через id 
    	}
    
    /* конвертация бит килобайт мегабайт гигабайт */
    	$bytes = $s;
    	$s = array('B', 'KB', 'MB', 'GB');
    	$e = floor(log($bytes)/log(1024));
    	echo $img = sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));
    ?>
    kolshix 8 месяцев назад

    Все получилось, но для моего случая = есть засада
    у меня галерея заполняется таким способом

    [gallery_             size="medium" columns="0" numberposts="20"]
    <!--nextpage-->
    [gallery_ offset="20" size="medium" columns="0" numberposts="20"]

    это нужно было для создания пагинации галереи по 20 картинок - ещё когда это делал (с плагином Cleaner Gallery) знал что будет засада, но руки не доходили, и сейчас этот момент настал
    вот что возвращает массив вместо id изображений

    Array ( [size] => medium [columns] => 0 [numberposts] => 20 [src] => Array ( [0] => http://site.ru/wp-content/uploads/2016/08/ ....

    Думаю недельку потрачу чтоб полечить галереи - а ведь знал что вермя настанет

    kolshix 8 месяцев назад

    пока делаю так

    <?php
    /* суммарный размер всех изображений галереи for me Kolshix */
    	$gallery     = get_post_galleries( $post->ID, false );   // Получить все id вложенных файлов  (можно и get_post_gallery)
    	$gallery     = $gallery[0];             // Взять нужную ячейку массива (так нужно в моем случае)
    	$gallery_ids = explode(',', $gallery['ids']);       // Извлечь массив id
    
    	$s = 0;
    	foreach( $gallery_ids as $gallery_id ){
    		$s += filesize( get_attached_file( $gallery_id ) ); // Сложить размер через id 
    	}
    
    /* конвертация бит килобайт мегабайт гигабайт */
    	$bytes = $s;
    	$s = array('B', 'KB', 'MB', 'GB');
    	$e = floor(log($bytes)/log(1024));
    	echo $img = sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));
    ?>
    Kama 8 месяцев назад

    Все правильно (код только чуть подправил твой). Теперь осталось только получить ID с использование плагина...

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.