Если вы еще не в курсе, то начиная с версии WordPress 2.9 RC1, появилась давно ожидаемая функция the_post_thumbnail, с помощью которой можно легко вставлять миниатюры в свои статьи. Хочу рассказать как работать с этой функцией, а также поделюсь впечатлениями от работы с ней.
Итак, в качестве миниатюр можно использовать изображения четырех стандартных размеров. Это «миниатюра» (150х150), «средний» (300х300), «большой» (1024х1024) и исходный. Изменить параметры этих размеров можно в меню Настройка — Медиафайлы.
Первое условие, которое необходимо для работы функции the_post_thumbnail — вставка специального кода, который активирует поддержку миниатюр. Его необходимо вставить в файл functions.php вашей темы. После этого, при редактировании статьи, вы будете видеть специальный блок для установки миниатюры, который расположен в правой части окна.
add_theme_support('post-thumbnails');
Далее нужно вставить код вывода миниатюр в том месте, где вам необходимо. Например, в тексте поста на главной странице. Обратите внимание, для каждого размера миниатюры свой код.
// миниатюра 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'));
Кроме того, можно назначить собственный размер миниатюры. Например:
// миниатюра уменьшена до 60х60 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');
Вот как можно использовать эти данные. Например, нам нужно вставить вдвое уменьшенную миниатюру:
$w = get_option('thumbnail_size_w') / 2; $h = get_option('thumbnail_size_h') / 2; the_post_thumbnail(array($w, $h), array('class' => 'alignleft'));
Еще один пример. Если размер миниатюры больше, чем 100х100 и thumbnail_crop включен, тогда уменьшить миниатюру до 100х100. Если меньше или равно 100х100, тогда поставить со стандартными рахмерами. Смотрим:
if ( get_option( 'thumbnail_size_w' ) > 100 && get_option( 'thumbnail_crop' ) == 1 ) { 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 http://bit.ly/6pdlD7 #wordpress #wp […]
Спасибо, интересно. Правда информация о 2х запросах к базе ужасает. Мой хостер порою и на ВП 2.7 с парой десяткой плагинов ругается, так что использование этой функции я для себя пока что отложу.
куда столько плагинов то ?!
Перспективный блоггер, за все нужно платить.
Wordpress изначально построен неэффективно, поэтому каждая новая фича, еще больше увеличивает требования к хостингу.
Мне кажется, рано или поздно, разработчикам придется полностью переписать ядро, встроив в него «родное» кеширование. Так, как например, это сделано в ModX и других.
Спасибо. А как функцию то правильно вставить, в том виде который в статье? Или нужно добавить какое-то обрамление типа function {} ?
в общем по всякому попробовал, в файл functions.php это зараза add_theme_support(‘post-thumbnails’); не хочет вставляться, выпадают ошибки
Вызов такой примерно:
По поводу активации фунции смотрите внимательно синтаксис в functions.php, может где-то что-то упустили.
у меня вот так получилось в functions.php:
между <?php
и
function bloqinfo($name = '')
добавил
add_theme_support('post-thumbnails'); {
if ( function_exists( 'add_theme_support' ) )
add_theme_support( 'post-thumbnails' ); }
черт знает что это значит
Спасибо за статью, искал, как добавить класс миниатюре.
Только у вас в примерах кода вместо знака правой угловой скобки подставляется сущность >
Спасибо, поправил