Сайты на WordPress

Использование миниатюр в WordPress 3.0

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

Теперь с появлением новой версии WordPress (на самом деле, еще версии 2.9), такая возможность появилась. Как она работает?

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

Что отличает тему WordPress, в которой реализован новый встроенный механизм работы с миниатюрами (thumbnail) картинок? Прежде всего, при вводе нового поста (или новой страницы) в админпанели справа появляется новый виджет.

Нажимая на ссылку «Задать миниатюру» мы получаем, по существу, тот же интерфейс, что и при вводе обычных картинок в предыдущих версиях системы.

Пока все просто. Но что делать, если виджета нет? Это может быть вызвано разными причинами. Возможно, у нас стоит старая версия WordPress. Но скорее всего, наша тема пока не поддерживает данную возможность. Что же требуется сделать, чтобы настроить тему?

Для этого в файл functions.php нашей темы надо добавить строку:

add_theme_support( 'post-thumbnails' );

После обновления файлов темы на сервере виджет в правом столбце админпанели должен появиться. Данная строка обновления работает как для постов, так и для страниц блога. Но, вообще говоря, можно задать такую возможность в отдельности или для постов, или для страниц. Для этого используются такие строки дополнения к functions.php:

add_theme_support( 'post-thumbnails', array( 'post' ) ); // Посты

add_theme_support( 'post-thumbnails', array( 'page' ) ); // Страницы

Теперь необходимо определиться с размером миниатюр и способом изменения размеров. Тут существует два варианта: пропорциональное изменение и обрезка.

Поясним на примере. Допустим, мы выбрали размер картинки миниатюры 50х50 пикселов. Допустим теперь, что исходная картинка имеет размер 100х50 пикселов. При пропорциональном уменьшении мы получаем размер миниатюры 50х25. Поэтому на странице сайта она займет только часть отведенного для нее места.

Есть и другой вариант. При способе с обрезкой миниатюра займет полный «квадратик» 50х50. Но при этом она будет обрезана, так что часть исходного изображения будет удалена.

Какой способ годится для Вас, решать Вам. Но вот что надо при этом добавить к файлу functions.php темы.

set_post_thumbnail_size( 50, 50 ); // 50х50 пикселов

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

set_post_thumbnail_size( 50, 50, true); // 50х50 пикселов

Как выводить миниатюры в теме? Очень просто. Для этого надо использовать их в цикле loop для соответствующего шаблона страниц темы.

Для того чтобы определить, есть ли миниатюра для некоторого поста, используется функция WordPress

has_post_thumbnail()

которая выдает true в случае, если миниатюра задана, и false в противном случае.

Таким образом, в цикле мы можем разместить конструкцию вида

<?php

if ( has_post_thumbnail() ) {
            // есть thumbnail
} else {
            // нет thumbnail’а
}
?>

Для вывода миниатюры используется функция the_post_thumbnail()

И в заключение более сложный пример. Допустим, мы хотим выводить на главной странице миниатюру размером 50х50, а на странице единичного поста – миниатюру, размер которой в ширину будет ограничен 400 пикселами, а в высоту – неограничен.

Вот как это делается. В файл functions.php добавляем строки

add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 50, 50, true ); // Обычный thumbnail
add_image_size( 'single-post-thumbnail', 400, 9999 ); // thumbnail поста

Для вывода миниатюры на главной странице используем функцию

<?php the_post_thumbnail(); ?>

А для вывода миниатюры на странице единичного поста – функцию

<?php the_post_thumbnail( 'single-post-thumbnail' ); ?>

Вот, собственно, и вся премудрость.

Что еще почитать:

Комментарии

18 коммент. на “Использование миниатюр в WordPress 3.0”
  1. Я под это подстроил однажды произвольные поля.
    Но, в качестве примера дописки вордпресса, удмаю, пригодится. Спасибо!

  2. anna:

    ..у меня WP 3.0 но почему-то миниатюры не хочет делать(((

  3. Mila:

    Спасибо, но для меня сложновато. Чтобы все это реализовать надо быть программистом? Надо же знать куда вставлять эти коды или в можно их вставить в конце файла?
    А вообще у меня немного другая проблема. В моей теме есть виджет задать миниатюру, но он обрезает картинку 200х150 (ширина Х высоту), а мне надо 100х150. Помогите, я в программировании 0, в каком файле менять размеры миниатюры? Спасибо.

  4. Мфт:

    Спасибо за статью! Скажите пожалуйста, а нельзя каким-то образом эту миниатюру задавать в качестве бэкграунда для дива? Допустим, есть заданных размеров, миниатюра автоматически становится бэкграундом этого дива, а внутри него ссылка на пост. Т.е. ссылка на пост визуально как-бы поверх картинки.

    • admin:

      Миниатюра — это картинка, и конечно она может использоваться в некоторых установках стилей CSS. В том числе и как бэкграунд. Возможно, есть даже и плагины с подобным эффектом.

  5. Подскажите, как реализовать миниатюру в виде ссылки на пост. Заранее благодарен.

  6. Подскажите, а как сделать так, чтоб ВП автоматом выдерала миниатюру первой картинки? Дело в том, что обратил внимание, что при добавлении картинки в пост, создается сразу ее миниатюра. Мне нужно вывести миниатюру первой картинки рядом с excerpt() в категориях.

  7. Спасибо за инттсрукцию, уже делаю)

  8. Александр:

    У меня при создании миниатюры на страницах листинга всё нормально.
    Но в самой статье в самом начале появляется увеличенная картинка. Мне это не нужно.
    Как её убрать из статьи, но оставить превьюшку в анонсе?

    • admin:

      Очевидно надо поправить шаблон WordPress’а, а именно, файл single.php. Все отображения картинок устанавливаются там.

      • Александр:

        К сожалению, пришлось править больше.
        Может кому-то пригодится.
        Мой шаблон создан с помощью artisteer
        Я поступил так:
        В файле шаблона functions.php (лежит в корне шаблона) продублировал функцию art_post() и назвал её art_post_single(). В полученной новой функции удалил строку ‘post_thumbnail’ => art_get_post_thumbnail(),
        Далее, в файле шаблона single.php заменил строку art_post(); на art_post_single();
        Всё получилось.
        Жаль только, что после правки шаблона в artisteer эту процедуру приходится повторять.

        Этот метод мне не кажется верным. Должен быть способ, который отключает картинку средствами wordpress.

  9. mrtoxa:

    Возникла трудность. После добавления
    if ( function_exists( ‘add_theme_support’ ) ) add_theme_support( ‘post-thumbnails’ ); в functions.php не добавляется меню для вставки превью на странице создания записи. Пробовал с этой же темой на локалхосте, все ок, а на самом сайте не хочет. Пытался на WordPress 3.3.1. и 3.3

Поделитесь своими мыслями

Расскажите нам, о чем Вы думаете...
да, если Вы хотите, чтобы картинка показывалась рядом с Вашим комментарием, подпишитесь на gravatar!

Я не робот.

Сайты на WordPress

Рейтинг@Mail.ru