Янв
2
66

Новая функция WordPress 2.9 – превью для постов

миниатюра поста wordpressПросмотрев парочку статей в русских блогах о WordPress и небольшие короткие заметки в англоязычных проектах относительно функции превью для постов в версии 2.9, я подумал, что тема достаточно простая и особо рассказывать там нечего. Но сегодня решил все же чуть более детально рассмотреть вопрос и, к моему удивлению оказалось, что там просто великое множество нюансов. Короче говоря, решил поделиться с вами всеми находками и составить самый подробный мануал относительно функции превью для постов (Post Thumbnail) в WordPress 2.9.

Изображения (превью, или также это называют миниатюра) для постов и страниц в блоге часто используются в различных журнальных (газетных) шаблонах, где для каждой статьи на страницах архива или главной выводится соответствующее изображение. В прошлом посте я рассмотрел возможность получения первой картинки поста с помощью самописной функции, но начиная с версии WordPress 2.9 разработчики решили значительно упростить задачу. Для этого была введена в эксплуатацию новая функция the_post_thumbnail(). Итак, как же ее включить, использовать и что можно сделать.

Активация функции the_post_thumbnail

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

if ( function_exists( 'add_theme_support' ) )
add_theme_support( 'post-thumbnails' );

После добавления данных строк в админке wordpress будет активирована возможность добавления превью. Проверка в коде используется для совместимости шаблона с разными версиями, чтобы если функции в вашей сборки не было, вся тема не «посыпалась».

Вы также можете добавить поддержку функции только для постов или страниц:

add_theme_support( 'post-thumbnails', array( 'post' ) ); // добавить для постов
add_theme_support( 'post-thumbnails', array( 'page' ) ); // добавить для страниц

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

Следующий шаг от Mark Jaquith – установка размеры для ваших превью в шаблоне. Для этого имеется два разных подхода – ресайз или вырезание части картинки. Ресайз позволяет пропорционально уменьшать изображения для поста до указанных вами параметров. Например, у вас есть картинка 100х50, тогда при уменьшении до 50х50 вы фактически получите превью размером 50х25. Преимущество этого метода в том, что отображаться будет все изображение целиком. Плохо то, что в таком случае вы можете получить не всегда одинаковые картинки – ресайз будет производиться то по ширине, то по высоте. В таком случае можно немного «схитрить» и указать для неважной величины очень большое значение – допустим, ширину картинки поставить в 50, а высоту – 9999. В итоге вы получите все превью с шириной 50, что весьма органично впишется в любой дизайн:)

set_post_thumbnail_size( 50, 50 ); // ресайз до размерности 50х50

Второй вариант для размера изображений – вырезание части картинки до заданных вами параметров ширины и высоты. Преимущество этого метода в том, что вы получите то, что просите – вам не нужно беспокоится, что какой из величин превью будет меньше нужной для шаблона. Конечно, с другой стороны будет удалена часть изображения снизу или справа. Для этого используем такой код:

set_post_thumbnail_size( 50, 50, true );

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

Добавление превью (миниатюры) для поста

После активации функции в админке при написании постав вы увидите блок «Миниатюра записи», где можно будет загрузить картинку. После клика на ссылку появится стандартное окно добавления изображения (Add Media), где можно выбрать изображение со своего компа или уже имеющееся в галерее. При выборе картинки из галереи в самом конце страницы с настройками вы найдете ссылочку «Использовать как миниатюру» (Use as thumbnail) – кликаем, и все готово.

вставка миниатюры для поста wordpress

На странице после загрузки фото будет такая же ссылка. Если вы все сделали правильно, то превью отобразится в блоке «Миниатюра записи».

Вывод миниатюры (превью) в шаблоне блога

За отображение превью отвечает функция the_post_thumbnail, поэтому в каком-то из файлов шаблона, например, index.php мы пишем:

<?php the_post_thumbnail(); ?>

Понятно, что использовать строку нужно в пределах цикла loop, которые выводит посты блога. В результате будет выведена миниатюра с размерами по умолчанию. Говорят, это все равно, что использовать код (хотя лучше без параметра):

<?php the_post_thumbnail('thumbnail'); ?>

Я точно не уверен, но вполне вероятно, что понятие «по умолчанию» берется именно из тех строк, которые мы указывали при активации – это нужно проверять на практие. Можно также выводить миниатюры различных размеров, которые в WordPress создаются автоматически при загрузке картинки.

<?php the_post_thumbnail('medium'); ?>
<?php the_post_thumbnail('large'); ?>

Кстати, интересно, что Matt Mullenweg в комментариях на одном из блогов не рекомендовал использовать именные аргументы для функции как thumbnail и другие, но пока никак это не объяснил.

Еще можно добавить в код проверку наличия миниатюры в посте:

<?php
if ( has_post_thumbnail() ) {
	// Есть! Выводим!
} else {
	// Нет, нужно использовать другие варианты.
}
?>

Результатом вызова функции the_post_thumbnail() будет генерация тега <img /> с классом wp-post-image, для которого вы можете прописать некоторые настройки в CSS по типу рамки или чего-то подобного:

.wp-post-image {
	border: 2px solid #ccc;
}

За вторую часть поста спасибо автору данной полезной заметки. Поскольку пост получился немаленьким, то еще один подпункт статьи я вынесу в следующий пост. В принципе, имеющейся информации должно хватить, завтра я покажу парочку полезных примерчиков применения данной функции на практике. Кстати, там в проверке наличия прервью для поста я говорил о другом варианте. Для вывода изображений вполне можно использовать произвольные поля (custom fields) — как раз недавно об этом писал в своем основном блоге.

P.S. Каждая уважающая себя компания, которая хочет достичь успеха должна иметь собственный корпоративный сайт. Профессиональная студия inClouds выполняет создание сайтов и их продвижение с высоким качеством работы с 2006-го года (более 100 успешных серьезных проектов).

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 3, средний балл: 5,00 из 7)
Loading ... Loading ...

категория Категории: Возможности;
теги Теги: , , , , , , .
Заработай на сайте
заработок в GoGetLinks

Комментариев - 66 к статье “Новая функция WordPress 2.9 – превью для постов”

  • Ольга   11.03.2013

    Добрый день!
    Может Вы знаете с чем это связано и как лечить: Рубрика (архив) при просмотре из админки отображается идеально. (Все записи в рубрике, с текстом, миниатюрой). Как только заходишь на сайт из вне — все пропадает (отображается только миниатюра последней записи и ВСЕ.) Даже сайдбара нет. Только счетчик, который должен стоять в сайдбаре появляется рядом с миниатюрой.

  • Tod   11.03.2013

    Ольга, это определенно какая-то ошибка в шаблоне.. один не закрытый DIV может разрушить весь сайт. Если шаблон не редактировали, то вероятно попался какой-то «лишний код» в один из постов блога — нужно поискать его, скрывая те или иные записи и просматривая все ли ок с сайтом.

  • Евгений   14.07.2014

    Здравствуйте! Подскажите, а какая функция может отвечать за подписи к фото, если тема самописная, и автор туда не включил изначально такую возможность, как сделать это самому? И куда вставлять код?

  • Tod   14.07.2014

    Евгений, если система самописная, тот никакой совет вам дать, увы, не могу.

  • Александр   12.01.2016

    Помогите! Установил тему The Bizness но в ней не выводятся миниатюры к записи. Функция включена, при создании поста, есть возможность выбрать миниатюру, но она всё равно не выводится. Делал все что тут написано, но не помогло. Что делать? Тема понравилась.

  • Tod   12.01.2016

    Александр, по миниатюрам был еще пост вот тут. Выводит их функция the_post_thumbnail(). Нужно добавлять внутри конструкции if (have_posts()… можно рядом с выводом контента the_content чтобы наверняка.

Оставить комментарий


Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Последние посты
Облако тегов
Лучшее в категории
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Loading ... Loading ...
Друзья проекта
Последние новости