Как получить размер миниатюры записи?

14 дек. 2011 г., 23:59:01
Просмотры: 27.2K
Голосов: 16

Я знаю, как установить размер миниатюры записи используя настройки WP Admin Настройки медиафайлов или используя эту функцию:

set_post_thumbnail_size( 150, 150 )

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

Я бы хотел иметь возможность сделать что-то вроде этого:

get_post_thumbnail_size(); // возвращает array(150, 150)

Как это можно сделать? Используется ли для этого get_option(), и какие будут ключи опций для ширины и высоты миниатюры?

0
Все ответы на вопрос 7
3
15

Однако есть и другой способ:

get_option( 'thumbnail_size_w' );
get_option( 'thumbnail_size_h' );

Примечание: thumbnail — это один из размеров, заданных в $_wp_additional_image_sizes. Поэтому вызов get_option() будет работать и для других размеров изображений.

10 февр. 2012 г. 10:43:12
Комментарии

Это действительно лучший вариант, потому что плагины могут запускать свои хуки на нём.

fuxia fuxia
10 февр. 2012 г. 15:55:34

Вот почему я удивлён, что об этом ещё не упомянули.

Mark Mark
10 февр. 2012 г. 16:00:01

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

Loosie94 Loosie94
16 мар. 2022 г. 16:46:30
1

Когда размер изображения добавляется либо WordPress (через add_image_size), либо плагином, либо вашим собственным пользовательским кодом, он попадает в глобальную переменную $_wp_additional_image_sizes. Я не смог найти аналогичной функции для извлечения данных из этой глобальной переменной, но вы можете просто заглянуть внутрь неё, чтобы определить ширину и высоту зарегистрированного размера изображения.

Пример:

global $_wp_additional_image_sizes;
// Вывод ширины
echo $_wp_additional_image_sizes['post_thumbnail']['width'];
// Вывод высоты
echo $_wp_additional_image_sizes['post_thumbnail']['height'];

Конечно, убедитесь, что обращаетесь к этим значениям после того, как размер был установлен. Например, если вы устанавливаете размер миниатюры во время инициализации (init), вам нужно выполнять необходимые действия после этого момента (иначе вы получите размеры, которые были до их установки).

Надеюсь, это поможет.

15 дек. 2011 г. 15:54:42
Комментарии

Похоже, что это post-thumbnail, а не post_thubmnail (WP3.6)

user2019515 user2019515
23 сент. 2013 г. 12:38:18
1

Единственное, чего еще не хватает, это ID миниатюры:

$post_thumbnail_id = get_post_thumbnail_id( $post_id );
$attachment = wp_get_attachment_image_src( $post_thumbnail_id );
$width=$attachment[1];
$height=$attachment[2];
20 июл. 2012 г. 16:33:45
Комментарии

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

Picard Picard
30 окт. 2021 г. 14:02:47
0

В дополнение к тому, почему так сложно получить эти числа, существует улучшение ядра, содержащее готовый патч. К сожалению, оно до сих пор не включено в ядро.

Следите за прогрессом по этому тикету: Wordpress Trac: Улучшение функции get_intermediate_image_sizes() для включения не только названий, но и размеров.

10 февр. 2012 г. 16:42:17
1

Имейте в виду, что этот global $_wp_additional_image_sizes; может работать не так, как ожидалось. Например, при использовании в плагине он не вернет дополнительные размеры, зарегистрированные Темой.

26 янв. 2012 г. 23:37:21
Комментарии

Это произойдет, если вы сделаете вызов достаточно поздно в последовательности действий, т.е. если тема регистрирует размеры в действии init, ваш вызов должен быть сделан после того, как это действие произойдет.

t31os t31os
11 апр. 2013 г. 22:08:07
1
-1

Вам нужна именно эта функция: wp_get_attachment_image_src

Кодекс: http://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src

Она возвращает массив, содержащий URL вложения, ширину и высоту.

15 дек. 2011 г. 00:32:59
Комментарии

Да, но функция ожидает ID для конкретного изображения, а у пользователя нет ID для передачи. Он хочет узнать зарегистрированный размер по имени, например, thumbnail (post_thumbnail).

t31os t31os
19 дек. 2011 г. 15:12:50
0
-1

В дополнение к вышесказанному:

$attachment = wp_get_attachment_image_src( $attachment_id ); // где $attachment_id - это ID вложения, из которого нужно получить миниатюру

Затем просто используйте следующий код для вывода URL, ширины и высоты:

echo $attachment[0]; // URL
echo $attachment[1]; // ширина
echo $attachment[2]; // высота
15 дек. 2011 г. 12:18:50