Как вы получаете размер миниатюры сообщения?

13

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

set_post_thumbnail_size( 150, 150 )

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

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

get_post_thumbnail_size(); // return array(150, 150)

Как это будет сделано? Это с помощью get_option(), и клавиши выбора будут для миниатюры ширины и высоты?

mikkelbreum
источник

Ответы:

8

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

Пример:

global $_wp_additional_image_sizes;
// Output width
echo $_wp_additional_image_sizes['post_thumbnail']['width'];
// Output height
echo $_wp_additional_image_sizes['post_thumbnail']['height'];

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

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

t31os
источник
Похоже, что это post-thumbnailне так post_thubmnail(WP3.6)
user2019515
15

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

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

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

отметка
источник
4
На самом деле это лучший вариант, потому что плагин может запускать свои ловушки на нем.
fuxia
1
Вот почему я удивлен, что это еще не было упомянуто.
Mark
2

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

Просто следите за ходом этого билета: Wordpress Trac: Расширение, get_intermediate_image_sizes()чтобы содержать не только имена, но и размеры.

кайзер
источник
1

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

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

Единственное, что по-прежнему отсутствует, это идентификатор миниатюры:

$post_thumbnail_id = get_post_thumbnail_id( $post_id );
$attachment = wp_get_attachment_image_src( $post_thumbnail_id );
$width=$attachment[1];
$height=$attachment[2];
Александр Пославский
источник
-1

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

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

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

Mihael
источник
1
Да, но он ожидает идентификатор для данного изображения, у пользователя нет идентификатора для передачи, он хочет узнать зарегистрированный размер по имени, например. уменьшенные изображения (post_thumbnail).
t31os
-1

В дополнение к посту выше:

$attachment = wp_get_attachment_image_src( $attachment_id ); // where $attachment_id is the ID of the attachment you want to get the thumbnail from

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

echo $attachment[0]; // url
echo $attachment[1]; // width
echo $attachment[2]; // height
Гербен Ван Дейк
источник