set_post_thumbnail_size против add_image_size

11

В чем разница между set_post_thumbnail_size и add_image_size? Является ли set_post_thumbnail_size для всех изображений и add_image_size для индивидуального определения размера изображений?

Спасибо.

Greeso
источник

Ответы:

26

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

По умолчанию WordPress создает 3 копии в 3 разных размерах:

  • 'thumb'
  • 'medium'
  • 'large'

Размер в пикселях для этих 3-х размеров можно установить на панели инструментов WordPress, под меню Settings -> Media.

Теперь функция add_image_sizeиспользуется для регистрации нового размера, который добавляет 3 значения по умолчанию.

Каждый размер зарегистрированный можно получить , используя его имя, в некоторой функции WordPress, например wp_get_attachment_image_src, wp_get_attachment_image, wp_get_attachment_link.

Все эти функции принимают параметр, $sizeкоторый должен быть именем одного из зарегистрированных размеров (один из 3 стандартов или один из пользовательских размеров, зарегистрированных с add_image_size).

Если 'full'в качестве $sizeаргумента используется исходное изображение, оно не изменяется.

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

Эти две функции получают (первое) и выводят (второе) изображение, которое установлено как «Featured Image» для сообщения.

Эти функции возвращают (или отражают) эти imgтеги в виде полного HTML-кода, что-то вроде

<img scr="http://www.example.com/wp-content/2013/08/image-200x200.jpg" />

Итак, какой размер используется?

Если a $sizeпередается как второй аргумент (1st is $postid), то эти функции возвращают изображение с таким размером. В противном случае эти функции поиска для размера изображения , зарегистрированный с именем: post-thumbnail.

Это не один из трех стандартных размеров, на самом деле это 4-й стандартный размер (считается 5-й full), и вы можете зарегистрировать его при вызове set_post_thumbnail_size.

Так

set_post_thumbnail_size( $width, $height, $crop );

это ярлык для

add_image_size( 'post-thumbnail', $width, $height, $crop );

Если вы не вызвали set_post_thumbnail_size(что означает, что размер 'post-thumbnail'не создан), WordPress будет использовать размер thumb, а если даже этот размер недоступен, WordPress будет использовать исходное изображение, которое не было изменено.

Регистрация пользовательских размеров изображений может быть очень полезна при разработке темы, но важно не злоупотреблять: каждое загруженное изображение копируется и изменяется в размере для всех зарегистрированных размеров, поэтому регистрация большого количества размеров значительно замедлит процесс загрузки изображения.

Записка:

Имейте в виду, что когда WordPress создает масштабированные копии изображения, он никогда не увеличивает его, а только создает меньшие копии: например, если исходное изображение имеет размер 400x500 пикселей, а средний размер изображения составляет 800x600 пикселей, средний размер и больше не создаются.

Таким образом, регистрация размера изображения никогда не дает гарантии, что файл изображения для каждого зарегистрированного размера фактически существует в папке содержимого WordPress. Даже потому, что зарегистрированные размеры изображений легко меняются: изменение настроек, переключение тем и т. Д.

Когда размер изображения изменяется по любой причине, это изменение влияет на изображения, загруженные после этого изменения; загруженные ранее изображения не меняют размеры и не масштабируются и не сохраняются.

Если нужно полагаться на определенные размеры изображений после того, как некоторые изображения уже загружены (например, после смены тем), тогда плагин Regenerate Thumbnails станет спасением жизни.

Gmazzap
источник
2
Потрясающие. Я бы кликнул 5 раз из-за вашего ответа, но сайт не позволяет. Thanls.
Greeso
Пожалуйста
Еще один квест: что если я не назвал set_post_thumbnail_size (что означает, что размер 'post-thumbnail' не создан, то я вызываю the_post_thumbnail. Что произойдет? (Потому что the_post_thumbnail попытается использовать post-thumbnail в качестве param).
Greeso
@GM, Большие пальцы за ясное объяснение
Istiaque Ahmed
Этот ответ очень полезен! Тем не менее, я думаю, что это: set_post_thumbnail_size( 150, 150 ); If you haven't called set_post_thumbnail_size (which means the size 'post-thumbnail' is not created), WordPress will use the size thumb, and if even this size is not available, WordPress will use the original image, the one not resized. ... это неправильно. По моему опыту тестирования, если set_post_thumbnail_size()не было вызвано, WP возвращается к полноразмерному изображению.
Трэвис Норткатт
1

Из Кодекса:

set_post_thumbnail_size

Установите размеры избранного изображения (ранее миниатюры) по умолчанию. Чтобы зарегистрировать дополнительные размеры изображений для избранных изображений, используйте: add_image_size ().

add_image_size

Регистрирует новый размер изображения. Это означает, что WordPress создаст копию избранного изображения (ранее известную как миниатюра поста) с указанными размерами при загрузке нового изображения.

Krzysiek Dróżdż
источник
Могу ли я использовать add_image_size без использования set_post_thumbnail_size?
Greeso
Да, конечно.
Krzysiek Dróżdż