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

25 окт. 2015 г., 14:05:41
Просмотры: 33.2K
Голосов: 14

Существует ли стандартный способ получить все зарегистрированные размеры изображений записи? Можно регистрировать разные размеры с помощью add_image_size(). Мне нужно получить все размеры изображения записи. Что-то вроде этого:

$sizes = get_post_feature_image_sizes($postid);

...который вернет массив объектов следующего вида (здесь в формате JSON):

[
{width: 200, height: 300, url: 'http://.........../wp-content/uploads/2015/10/file-200x300.jpg'},
{width: 300, height: 400, url: 'http://.........../wp-content/uploads/2015/10/file.jpg'},
]

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

1
Комментарии

Миниатюра записи — это просто ID вложения, для работы с ним должны подходить все стандартные API вложений

Tom J Nowell Tom J Nowell
25 окт. 2015 г. 16:23:40
Все ответы на вопрос 3
3
16

Я не помню функцию, которая сделает именно это, но это легко достижимо с помощью API в целом:

  1. Получить ID вложения с помощью get_post_thumbnail_id()
  2. Получить доступные размеры с помощью get_intermediate_image_sizes()
  3. Для каждого размера использовать wp_get_attachment_image_src(), которая даёт именно те данные, которые вам нужны (URL и размеры).
25 окт. 2015 г. 19:39:50
Комментарии

Спасибо, это очень помогло! :) Это мой первый опыт разработки с WP и API, и терминология немного пугает. :)

NoOne NoOne
26 окт. 2015 г. 16:40:13

есть ли способ получить сгенерированные размеры, ширину и высоту миниатюры текущей записи. Например, если для миниатюры установлен размер 540 x 400, хотя должен быть 550 x 550. Как получить размер миниатюры текущей записи, чтобы сохранить $width = 540 и $height = 400 в данном примере.

Nimesh Nimesh
7 мая 2018 г. 01:51:14

@Nimesh wp_get_attachment_metadata($attachment_id) даст вам то, что нужно.

jave.web jave.web
28 сент. 2018 г. 21:00:59
1

После того, как вы получите его ID ( get_post_thumbnail_id($YOUR_POST_ID) ), вам нужно узнать базовый URL загрузок и метаданные вложения.

Базовый URL загрузок можно найти в массиве, возвращаемом функцией wp_upload_dir().

Метаданные вложения можно получить с помощью wp_get_attachment_metadata().

Вот удобная функция, которую я написал, она подготавливает данные URL для любого вложения изображения, а не только для избранного.

function prepareImageData( $attachment_id ){
  $uploads_baseurl = wp_upload_dir()['baseurl'];

  $prepared = [];
  $data = wp_get_attachment_metadata($attachment_id);
  $prepared = [
    'mime_type' => get_post_mime_type($attachment_id),
    'url' => $uploads_baseurl.'/'.$data['file'],
    'sizes' => [],
  ];

  foreach( $data['sizes'] as $size => $sizeInfo ){
    $prepared['sizes'][$size] = [
      'url' => $uploads_baseurl.'/'.$sizeInfo['file'],
    ];
  }

  return $prepared;
}
28 сент. 2018 г. 20:59:52
Комментарии

отлично! Возможно, вам также стоит добавить $dir = pathinfo( $data['file'] )['dirname']; и использовать как: 'url' => $uploads_baseurl.'/'.$dir.'/'.$sizeInfo['file'], так как могут отсутствовать директории с годом/месяцем

Ramon Fincken Ramon Fincken
11 февр. 2021 г. 16:51:01
1

Для получения изображения по размеру вы можете использовать предопределенную функцию WordPress the_post_thumbnail( $size, $attr ).

Вы можете использовать предустановленные размеры медиафайлов.

the_post_thumbnail();                 

the_post_thumbnail( 'thumbnail' );       // Миниатюра (по умолчанию 150px x 150px макс.)
the_post_thumbnail( 'medium' );          // Среднее разрешение (по умолчанию 300px x 300px макс.)
the_post_thumbnail( 'large' );           // Большое разрешение (по умолчанию 640px x 640px макс.)
the_post_thumbnail( 'full' );            // Полное разрешение (оригинальный размер загруженного файла)

the_post_thumbnail( array(100, 100) );

Это может вам помочь.

26 окт. 2015 г. 14:40:25
Комментарии

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

Phill Healey Phill Healey
7 авг. 2017 г. 23:16:22