set_post_thumbnail_size vs add_image_size - в чем разница?

1 авг. 2013 г., 10:48:48
Просмотры: 17.2K
Голосов: 14

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

Спасибо.

0
Все ответы на вопрос 2
5
32

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

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

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

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

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

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

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

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

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

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

Что возвращается (или выводится) этими функциями — это полноценный HTML-тег img, например:

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

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

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

Это не один из 3 стандартных размеров, а четвертый (пятым считается 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 создает уменьшенные копии изображения, он никогда не увеличивает его, а только уменьшает: например, если оригинальное изображение имеет размер 400x500px, а размер 'medium' установлен как 800x600px, то размер 'medium' и больше не создаются.

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

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

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

1 авг. 2013 г. 12:03:18
Комментарии

Отлично. Я бы нажал 5 раз из-за вашего ответа, но сайт не позволяет. Спасибо.

Greeso Greeso
1 авг. 2013 г. 12:18:53

Пожалуйста, одного раза достаточно :)

gmazzap gmazzap
1 авг. 2013 г. 12:22:03

Еще один вопрос: что если я не вызывал set_post_thumbnail_size (что означает, что размер 'post-thumbnail' не создан), а затем вызываю the_post_thumbnail. Что произойдет? (потому что the_post_thumbnail попытается использовать post-thumbnail в качестве параметра).

Greeso Greeso
1 авг. 2013 г. 13:15:55

@G.M., Спасибо за понятное объяснение

Istiaque Ahmed Istiaque Ahmed
6 янв. 2014 г. 10:12:05

Этот ответ очень полезен! Однако, я считаю, что вот это:

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

...неверно. По моему опыту тестирования, если set_post_thumbnail_size() не был вызван, WP использует изображение в полном размере.

Travis Northcutt Travis Northcutt
26 нояб. 2015 г. 00:09:34
2

Из Codex:

set_post_thumbnail_size

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

add_image_size

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

1 авг. 2013 г. 10:55:18
Комментарии

Можно ли использовать add_image_size без использования set_post_thumbnail_size?

Greeso Greeso
1 авг. 2013 г. 11:08:07

Да, конечно.

Krzysiek Dróżdż Krzysiek Dróżdż
1 авг. 2013 г. 13:52:38