Как получить все размеры изображений записи и их URL-адреса?
Существует ли стандартный способ получить все зарегистрированные размеры изображений записи?
Можно регистрировать разные размеры с помощью 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'},
]
Существует ли что-то подобное, или придется сканировать все имена файлов в папке загрузок с помощью регулярных выражений?

Я не помню функцию, которая сделает именно это, но это легко достижимо с помощью API в целом:
- Получить ID вложения с помощью
get_post_thumbnail_id()
- Получить доступные размеры с помощью
get_intermediate_image_sizes()
- Для каждого размера использовать
wp_get_attachment_image_src()
, которая даёт именно те данные, которые вам нужны (URL и размеры).

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

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

После того, как вы получите его 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;
}

Для получения изображения по размеру вы можете использовать предопределенную функцию 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) );
Это может вам помочь.
