Выводит html код картинки-миниатюры текущего поста.
Этот Тег шаблона должен использоваться внутри Цикла WordPress.
Дополнительный размер картинки, которую затем можно получить с помощью этой функции, можно создать через add_image_size() . По умолчанию доступны следующие размеры: thumbnail , medium , large , full , post-thumbnail .
✈ 1 раз = 0.001739с = очень медленно | 50000 раз = 6.79с = быстро | PHP 7.1.2, WP 4.7.3
Хуков нет.
Возвращает
null (ничего). Выводит на экран строку. Функция выводит на экран html код картинки или пустое значение (null), если картинки не существует.
Использование
$size(строка/массив)Размер миниатюры, которую нужно получить. Может быть строкой: thumbnail , medium , large , full или массивом из двух элементов (ширина и высота картинки): array(32, 32) .
Когда указан массив, новая миниатюра с указанными размерами не создается. А WP ищет самый подходящий размер из тех что уже есть, берет его и просто указывает высоту и ширину в пикселях для тега IMG, чтобы уменьшить картинку. Т.е. картинка уменьшается только визуально.
По умолчанию: "post-thumbnail", размер который устанавливается для темы функцией set_post_thumbnail_size()
$attr(строка/массив)
Массив атрибутов, которые нужно добавить получаемому html тегу img .
Можно указать строкой: alt=альт&class=alignleft или массивом:
$default_attr = array("src" => $src, "class" => "attachment-$size", "alt" => trim(strip_tags($wp_postmeta->_wp_attachment_image_alt)),);
Атрибуты можно указывать любые.
По умолчанию: ""
Примеры
#1 Миниатюра как ссылка на пост
Пример 1: Используйте следующий код, чтобы сделать картинку-миниатюру ссылкой на пост. Пример для использования внутри Цикла WordPress:
" title="" >
#2: Сделаем миниатюру ссылкой на пост
Для этого используем хук post_thumbnail_html . В этом случае картинка будет ссылкой на пост сразу при вызове функции the_post_thumbnail(); . Код нужно добавлять в файл шаблона functions.php :
Add_filter("post_thumbnail_html", "my_post_image_html", 10, 3); function my_post_image_html($html, $post_id, $post_image_id) { $html = "" . $html . ""; return $html; }
#3 Миниатюра-ссылка на оригинальный размер
Пример, показывающий как создать миниатюру, которая будет ссылаться на оригинальный размер картинки:
#4 Регистрация нового размера
С помощью add_image_size() можно зарегистрировать новый размер и затем получить его по ключу:
// допустим в functions.php мы регистрируем дополнительный размер так: add_image_size("spec_thumb", 360, 240, true); // далее в цикле выводим этот размер так: the_post_thumbnail("spec_thumb");
Flector 5
Это маленький, но весьма полезный плагин, чьей единственной функцией является перегенерация миниатюр в блоге. Любое изменение размера миниатюр в настройках блога коснется лишь новых залитых вами картинок, а все старые картинки останутся с прежними размерами. А что делать, если вы сменили шаблон блога на тот, в котором дизайн заточен под определенный размер миниатюр? Вот тут то вам и понадобится данный плагин. Установили плагин, перегенерировали миниатюры в нужном размере и все, плагин можно удалять. И не стоит бояться экспериментировать с новыми шаблонами и разными размерами миниатюр – плагин создает новые миниатюры, не удаляя при этом старые. Таким образом, вы всегда можете откатиться на свой изначальный шаблон без какого-либо ущерба (ну кроме лишних картинок в папке загрузок) для своего блога.
1 Распаковываем архив.
2 Копируем папку regenerate-thumbnails в /wp-content/plugins/ .
3 Заходим в админку блога на вкладку "Плагины " и активируем плагин.
Никаких настроек в плагине нет. Так что не забываем сначала зайти в "Параметры\Медиафайлы " и установить нужные вам размеры миниатюр.
После этого у нас есть два варианта:
1 Перегенерация всех картинок сразу. Зайдите в "Инструменты\Regen. Thumbnails " и нажмите кнопку "Regenerate All Thumbnails ":
Теперь вам остается лишь ждать, пока плагин пересоздаст все миниатюры. Это может занять от нескольких секунд до десятков минут в зависимости от количества картинок. Сотня картинок пересоздается примерно одну минуту.
2 Перегенерация избранных картинок. Можно пересоздать лишь выбранные картинки, для этого зайдите в библиотеку медиафайлов. Там вы сможете перегенерировать или несколько картинок сразу или каждую по отдельности:
В шаблоне миниатюры могут выводиться или с относительными размерами или с точно определенными размерами. Относительные размеры (миниатюра, средняя, крупная) означают, что шаблон выведет картинки ровно в тех размерах, которые указаны в настройках блога. Независимо от того, впишутся ли картинки в этих размерах в дизайн шаблона или нет.
Функция the_post_thumbnail (которую вы можете найти в файле index.php в папке шаблона) при этом выглядит примерно так:
the_post_thumbnail("thumbnail"); // миниатюра (150 на 150) the_post_thumbnail("medium"); // средняя (300 на 300) the_post_thumbnail("large"); // большая (640 на 640) the_post_thumbnail("full"); // полная (без ограничений)
Если этот код похож на тот, который есть в файлах вашего шаблона, то вам придется вручную подбирать те размеры миниатюр, которые будут хорошо выглядеть в новом шаблоне блога. Но, как правило, если указаны относительные размеры, то автор шаблона рассчитывает на то, что размеры картинок установлены со значениями по умолчанию.
the_post_thumbnail( array (500 , 150 ) ) ; // 500 на 150 |
the_post_thumbnail(array(500,150)); // 500 на 150
Именно эти размеры вы и должны указать в настройках блога, а потом пересоздать картинки именно с этими размерами. Только в таком случае шаблон будет выглядеть именно так, как задумал его автор. Если вы не укажите эти размеры в настройках блога, то будет выведена картинка максимально близкая к указанным размерам. На деле это означает, что вместо этого:
Будет выведено вот это:
Пример, конечно, надуманный. Но, тем не менее, он наглядно показывает, что дизайнер мог иметь ввиду одно, а получается совсем другое только потому, что у вас миниатюры заданы не тех размеров, которые использовал автор шаблона. В данном случае записи вообще налезают друг на друга и портят дизайн напрочь. Многие шаблоны так и отбрасываются пользователями, которые просто не могут понять, что кривизна дизайна этих шаблонов вызвана неправильными размерами миниатюр, а вовсе не кривыми ручками их авторов.
$post_id (целое число ) ID поста, миниатюру которого нам нужно получить, по умолчанию — ID текущего пост из цикла. $size (строка|массив ) в этом параметре указываем размер миниатюры. Может принимать следующие значения:
- thumbnail / medium / large — одно из стандартных размеров изображений, зарегистрированных в WordPress по умолчанию, данные размеры можно настроить в Параметры > Медиа,
- full — оригинальное разрешение изображения — таким оно было загружено на сайт,
- Можно указать собственные параметры ширины и высоты миниатюры в виде массива, например array(50, 30) . Обратите внимание, WordPress не будет создавать дубликат картинки под этот размер — вместо этого будет использоваться наиболее близкий по разрешению зарегистрированный размер картинки, подогнанный под ваши параметры с сохранением оригинальных пропорций.
Чтобы было понятнее, приведу пример. Предположим, в качестве этого аргумента мы указали array(50, 30) . У меня самый близкий размер будет 125×125 (thumbnail) — URL этой картинки и будет вставлен в атрибут src . Окей, а что с пропорциями? Так как 125×125 — это квадрат, то и наша миниатюра будет квадратной, она впишется по наименьшему параметру, т.е. результат будет 30×30.
- Один из собственных размеров изображений, зарегистрированных через функцию .
- src — если вам надо, можете даже заменить URL картинки.
- class — класс тега , по умолчанию имеет следующие классы wp-post-image и attachment-{размер изображения} .
- alt — по умолчанию trim(strip_tags($attachment->post_title)) — указывается в админке при загрузке/редактировании медиафайла.
- title — по умолчанию trim(strip_tags($attachment->post_excerpt)) .
Пример 1
Простой пример — просто выведем миниатюру поста с ID = 5:
echo get_the_post_thumbnail( 5 , "thumbnail" ) ; // |
Пример 2. Как сделать миниатюры с ссылками на пост?
Предположим, мы хотим реализовать это на страницах категорий. Давайте немного доработаем цикл:
while ( have_posts() ) : the_post() ; if ( has_post_thumbnail() ) : echo "ID ) . "">" . get_the_post_thumbnail( $post ->ID , "thumbnail" ) . "" ; endif ; echo "ID ) . "">" . $post ->post_title . "" ; endwhile ; |
В этом примере я также использовал функцию для того, чтобы в случае отсутствия миниатюры код не выводил лишний тег .
Пример 3. Как сделать, чтобы при клике на миниатюру, открывалась полная версия картинки?
Код из этого примера отлично подойдет для использования в каком-нибудь плагине jQuery, например fancybox или pretty photo. В таком случае вам возможно также понадобится добавить класс для ссылки.
Вы также можете ознакомиться с документацией функций и на моем блоге.
Пример 4. Используем третий параметр $attr для изменения класса миниатюры
Давайте добавим на наши миниатюры класс align-left типа для того,чтобы они обтекались текстом слева:
Фильтр post_thumbnail_size
Фильтр позволяет задать размер миниатюр, используемых на блоге (везде на блоге).
А теперь пример со следующим условием: для всех миниатюр на блоге, которые выводятся через функцию get_the_post_thumbnail() с параметром $size равным thumbnail заменяем размер на medium , остальные размеры миниатюр не трогаем:
Количество параметров данного фильтра не может не радовать, это означает, что мы можем творить с возвращаемым HTML-кодом всё, что нам угодно.
$html (строка ) HTML-код, возвращаемый функцией по умолчанию, $post_id (целое число ) ID поста, миниатюру которого нужно получить, $post_thumbnail_id (целое число ) ID миниатюры, $size (строка|массив ) размер миниатюры, $attr (массив ) массив HTML-атрибутов, которые были заданы при вызове функции, если не заданы, то пустой массив;
А теперь несколько интересных примеров.
Пример 1. Автоматическое проставление ссылок на пост
Фишка в том, что каждый раз при использовании функции get_the_post_tumbnail() миниатюры уже будут возвращаться с автоматически проставленными ссылками на пост.
function true_auto_linking( $html , $post_id , $post_thumbnail_id , $size , $attr ) { return "" . $html . "" ; } add_filter ("post_thumbnail_html" , "true_auto_linking" , 10 , 5 ) ; |
Круто, да? А главное — всё очень просто.
Пример 2. Возвращаем только URL миниатюры
Миша Рудрастых
Если вам нужна помощь с вашим сайтом или может даже разработка с нуля - .
На многих блогах рядом с описанием постов можно встретить небольшую (большую) миниатюру, которая должна передавать содержание поста. До некоторых пор создать такое было нелегко. С появлением же Wordpress 2.9 осуществить такое стало намного легче.
В этом уроке я покажу Вам как добавить подобный функционал к Вашим шаблонам оформления Wordpress.
Включение Post-Thumbnail функции в шаблонах
Включение происходит очень просто. Все что от Вас требуется - добавление одной строки в файле functions.php:
Add_theme_support("post-thumbnails");
Вставка миниатюр к постам
Когда Вы заходите в администраторской панели в раздел написания нового поста, Вы должны увидеть новый отдел сбоку страницы.
Заметьте, что новый отдел может находится вне видимости и Вам придется опуститься немного ниже. После нажатия Set thumbnail появляется новое диалоговое окно
Нажмите Use as thumbnail и миниатюра будет добавлена к Вашему сообщению:
Отображение миниатюр
После того как мы написали новость, давайте добавим ее. Для того, чтобы миниатюра отображалась необходимо добавить строку в цикл Wordpress. Откройте файл index.php и добавьте следующее:
Это позволит вывести изображение используя классы attachment-post-thumbnail и wp-post-image. C помощью этих классов мы сможем оформить внешний вид миниатюр с помощью CSS. В картинке ниже мы можем увидеть миниатюру с границей и отступом.
На картинке выше миниатюра довольно большая. Ее размер можно менять из админки Settings > Media.
Другой способ определение размеров миниатюры - это изменение файла functions.php. Для этого нам понадобится добавить еще одну строку:
Add_theme_support("post-thumbnails"); set_post_thumbnail_size(588, 250, true);
Теперь нам необходимо сообщить Wordpress, чтобы использовался именно этот размер. Требуется немного видоизменить наш цикл в index.php:
Теперь Wordpress точно знает какую версию миниатюры использовать. Вот что у нас получилось:
Теперь добавим еще немного PHP в файл single.php, чтобы при открытии сообщения миниатюра была в самом верху:
Добавление больше размеров миниатюр
Если Вы хотите, чтобы на главной странице миниатюры были одного размера, а на самой странице сообщения другого - нужно делать следующее.
Смысл заключается в следующем: мы хотим, чтобы на странице сообщения было большое изображение, а на главной - маленькое. Для этого нам необходимо добавить еще один размер миниатюры в файл функций:
Add_image_size("loopThumb", 588, 125, true);
Описание аргументов:
Loopthumb - название нового размера миниатюр
- 588 - ширина в пикселях
- 125 - высота
-
true - настройка, которая сообщает
Wordpress следует ли использовать средства движка для изменения размеров изображения
Нам необходимо будет изменить наш код в файле index.php:
Также следует заметить, что у нас появятся два новых стиля для управления внешним видом миниатюры нового размера: attachment-loopThumb и wp-post-image. Может быть полезно обращаться к классу wp-post-image в таблице стилей или же добавить собственный класс при обращении к миниатюре:
"loopyThumbs")); ?>
Это выдаст тег img со следующими классами: loopyThumbs и wp-post-image.
Допустим мы хотим сделать квадратные миниатюры, тогда нужно создать новый размер:
Add_image_size("squareThumb", 125, 125, true);
Также, возможно, Вы захотите, чтобы миниатюры была слева и был небольшой отступ справа:
Attachment-post-thumbnail { float: left; margin-right: 10px; }
Теперь мы меняем код в index.php для отображения нашего квадрата:
Вот что у нас получится:
Если Вы будете добавлять ранее загруженные изображения в качестве миниатюр, у Вас могут быть не совсем ровные квадраты. Это происходит из за того, что при загрузке изображений Wordpress не мог предвидеть, что в будущем Вы захотите использваоть квадратные миниатюры.
Но есть выход и в этой ситуации. Нам поможет плагин Regenerate Thumbnails . После установки плагина - зайдите Tools > Regen и сгенери руйте новые миниатюры ( Regenerate all Thumbnails). После этого у нас будут ровные квадраты.
И помните - для отображения миниатюр у Вас должен стоять Wordpress 2.9.
Надеюсь, Вам понравился урок. До следующих встреч!