Если вы еще не в курсе, то начиная с версии WordPress 2.9 RC1, появилась давно ожидаемая функция the_post_thumbnail, с помощью которой можно легко вставлять миниатюры в свои статьи. Хочу рассказать как работать с этой функцией, а также поделюсь впечатлениями от работы с ней.
Итак, в качестве миниатюр можно использовать изображения четырех стандартных размеров. Это «миниатюра» (150×150), «средний» (300×300), «большой» (1024×1024) и исходный. Изменить параметры этих размеров можно в меню Настройка — Медиафайлы.
Первое условие, которое необходимо для работы функции the_post_thumbnail — вставка специального кода, который активирует поддержку миниатюр. Его необходимо вставить в файл functions.php вашей темы. После этого, при редактировании статьи, вы будете видеть специальный блок для установки миниатюры, который расположен в правой части окна.
Далее нужно вставить код вывода миниатюр в том месте, где вам необходимо. Например, в тексте поста на главной странице. Обратите внимание, для каждого размера миниатюры свой код.
the_post_thumbnail('thumbnail');
// средний
the_post_thumbnail('medium');
// большой
the_post_thumbnail('large');
// исходный
the_post_thumbnail();
Вы можете назначить нужное выравнивание для миниатюры, а также присвоить свой класс. Например:
the_post_thumbnail('thumbnail', array('class' => 'alignleft'));
// справа
the_post_thumbnail('thumbnail', array('class' => 'alignright'));
// по центру
the_post_thumbnail('thumbnail', array('class' => 'aligncenter'));
// справа и свой класс 'my_own_class'
the_post_thumbnail('thumbnail', array('class' => 'alignright my_own_class'));
Кроме того, можно назначить собственный размер миниатюры. Например:
the_post_thumbnail(array(60,60), array('class' => 'alignleft'));
// миниатюра со стандартными размерами
the_post_thumbnail(array(150,150), array('class' => 'alignleft'));
// средняя миниатюра, уменьшенная до 200х133
the_post_thumbnail(array(200,200), array('class' => 'alignleft'));
// большая миниатюра уменьшена до 400x266
the_post_thumbnail(array(400,345), array('class' => 'alignleft'));
Обратите внимание, что исходное соотношение сторон не изменится, даже если указать неправильные размеры. Это плюс.
А как сделать, чтобы блогер мог сам менять размеры миниатюр, не прибегая к правке файлов темы?
Для тех, кто занимается профессиональной разработкой для WordPress, это очень важный вопрос. Что узнать размеры миниатюр, заданые в админке, достаточно воспользоваться стандартной функцией. Например:
get_option('thumbnail_size_w');
// высота миниатюры
get_option('thumbnail_size_h');
// высота среднего размера
get_option('medium_size_h');
// ширина большого размера
get_option('large_size_w');
// 1 = обрезать точно по размеру, 0 = не обрезать
get_option('thumbnail_crop');
Вот как можно использовать эти данные. Например, нам нужно вставить вдвое уменьшенную миниатюру:
$h = get_option('thumbnail_size_h') / 2;
the_post_thumbnail(array($w, $h), array('class' => 'alignleft'));
Еще один пример. Если размер миниатюры больше, чем 100×100 и thumbnail_crop включен, тогда уменьшить миниатюру до 100×100. Если меньше или равно 100×100, тогда поставить со стандартными рахмерами. Смотрим:
the_post_thumbnail(array(100,100));
} else {
the_post_thumbnail('thumbnail');
}
Теперь вы знаете все про миниатюры WordPress
Имейте ввиду, что каждый вызов функции the_post_thumbnail создает 2 запроса к базе данных. Соответственно, при стандартном выводе 10 статей на страницу, это 20 запросов.
Если не хотите ждать выхода финальной версии 2.9, то можете скачать WordPress 2.9 Beta2 и в воочию увидеть новые возможности.
Перевод: The Ultimative Guide For the_post_thumbnail In WordPress 2.9
Постоянная ссылка: Установка миниатюр в WordPress, подробное описание the_post_thumbnail
[...] This post was mentioned on Twitter by Michael Davis, Yuri Pokhylko. Yuri Pokhylko said: Установка миниатюр в WordPress, подробное описание the_post_thumbnail bit.ly/6pdlD7 #wordpress #wp [...]
Спасибо, интересно. Правда информация о 2х запросах к базе ужасает. Мой хостер порою и на ВП 2.7 с парой десяткой плагинов ругается, так что использование этой функции я для себя пока что отложу.
Перспективный блоггер, за все нужно платить.
WordPress изначально построен неэффективно, поэтому каждая новая фича, еще больше увеличивает требования к хостингу.
Мне кажется, рано или поздно, разработчикам придется полностью переписать ядро, встроив в него «родное» кеширование. Так, как например, это сделано в ModX и других.
Спасибо. А как функцию то правильно вставить, в том виде который в статье? Или нужно добавить какое-то обрамление типа function {} ?
в общем по всякому попробовал, в файл functions.php это зараза add_theme_support ('post-thumbnails'); не хочет вставляться, выпадают ошибки
Вызов такой примерно:
< ?php the_post_thumbnail(array(90,90)); ?>
По поводу активации фунции смотрите внимательно синтаксис в functions.php, может где-то что-то упустили.
у меня вот так получилось в functions.php:
между <?php
и
function bloqinfo ($name = '')
добавил
add_theme_support ('post-thumbnails'); {
if ( function_exists ( 'add_theme_support' ) )
add_theme_support ( 'post-thumbnails' ); }
черт знает что это значит