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


13

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

set_post_thumbnail_size( 150, 150 )

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

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

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

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

Ответы:


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'];

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

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


Похоже, что это 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; может работать не так, как ожидалось. Например, при использовании в плагине он не будет возвращать дополнительные размеры, которые были зарегистрированы Темы.


Это будет, если вы сделаете вызов достаточно позже в последовательности действий, т.е. если тема регистрирует размеры в действии 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-адрес, ширину и высоту вложения.


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.