Установка миниатюр в WordPress, подробное описание the_post_thumbnail

Если вы еще не в курсе, то начиная с версии 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

10 комментариев на «“Установка миниатюр в WordPress, подробное описание the_post_thumbnail”»

  1. […] 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х запросах к базе ужасает. Мой хостер порою и на ВП 2.7 с парой десяткой плагинов ругается, так что использование этой функции я для себя пока что отложу.

  3. Перспективный блоггер, за все нужно платить.
    Wordpress изначально построен неэффективно, поэтому каждая новая фича, еще больше увеличивает требования к хостингу.
    Мне кажется, рано или поздно, разработчикам придется полностью переписать ядро, встроив в него «родное» кеширование. Так, как например, это сделано в ModX и других.

  4. max:

    Спасибо. А как функцию то правильно вставить, в том виде который в статье? Или нужно добавить какое-то обрамление типа function {} ?

  5. max:

    в общем по всякому попробовал, в файл functions.php это зараза add_theme_support(‘post-thumbnails’); не хочет вставляться, выпадают ошибки

  6. Вызов такой примерно:

    По поводу активации фунции смотрите внимательно синтаксис в functions.php, может где-то что-то упустили.

  7. max:

    у меня вот так получилось в functions.php:

    между <?php
    и
    function bloqinfo($name = '')
    добавил

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

    черт знает что это значит

  8. Спасибо за статью, искал, как добавить класс миниатюре.
    Только у вас в примерах кода вместо знака правой угловой скобки подставляется сущность >