Миниатюры в WordPress

Категория: WordPress

Справка по использованию миниатюр WordPress сформированная в процессе разработки кастомной темы.

Примечание

Если на странице редактирования поста не отображается метабокс "Миниатюра" - нужно добавить эту функцию для данного типа постов. Добавить поддержку post-thumbnails можно в файле functions.php вашей темы или в хуке after_setup_theme вашего плагина:

add_theme_support('post-thumbnails', ['post', 'movie']);
set_post_thumbnail_size(70, 70, $crop = false);

Перечень размеров миниатюр

Все доступные размеры миниатюр в блоге зарегистрированные функцией add_image_size():

$image_sizes = get_intermediate_image_sizes(); // массив доступных размеров превьюшек

Вывести доступные размеры миниатюр в режиме отладки:

function get_intermediate_image_sizes_my_debug() {
    global $_wp_additional_image_sizes;
    $additional_image_sizes = $_wp_additional_image_sizes;
    uasort($additional_image_sizes, function ($a, $b) {
        return $a['width'] - $b['width'];
    });

    echo "<pre>";
    foreach ($additional_image_sizes as $key => $p) {
        $size = "{$p['width']}x{$p['height']}";
        $size = str_pad($size, 8);
        echo "$size $key (crop: {$p['crop']})\n";
    }
    echo "</pre>";
}

get_intermediate_image_sizes_my_debug();

Получение миниатюр поста

По дефолту мы имеем следующие размеры миниатюр изображений:

thumbnail - 150х150, маленькая миниатюра, класс .attachment-thumbnail. Алиас: thumb
medium    - 300х300, средняя, .attachment-medium
large     - 640х640, большая, .attachment-large
full      - оригинал, .attachment-full
Примечание

Если вы укажете несуществующий размер миниатюры, то WordPress вернет вам ссылку на оригинальную картинку, а не пустую строку.

Проверить поддержку темой миниатюры указанного размера:

$thumbnail_size = current_theme_supports('post-thumbnail') ? 'post-thumbnail' : 'thumbnail';

Получить ID записи прикрепленной к посту миниатюры:

$thumbnail_id = get_post_thumbnail_id($post['ID']);

Проверить наличие миниатюры у поста и вывести миниатюру:

if (has_post_thumbnail($post_id)) {
  the_post_thumbnail();
}

Получить URL миниатюры текущего поста:

get_the_post_thumbnail_url('thumbnail'); // URL

Вывести путь к миниатюре:

the_post_thumbnail_url($size = 'post-thumbnail'); // URL

Сформировать тег IMG:

the_post_thumbnail('thumbnail'); // <img src=".." class="attachment-thumbnail">

При генерации IMG тега, будет добавлен класс указывающий на размер миниатюры.

Получить путь к изображению:

$image_path = get_attached_file($attachment_id);

Добавление своих размеров миниатюр

Задать собственные размеры миниатюр можно из админки блога: Настройки » Медиафайлы

Или же вы можете зарегистрировать кастомный размер миниатюры, который будет создаваться при загрузке изображения на сервер блога:

add_image_size('single-post-thumbnail', 590, 180 );
add_image_size('medium', 728, 380, $crop = true);

Ядро WordPress предоставляет возможность создавать миниатюры изображений только при загрузке изображения!

Генерация миниатюр

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

Для этого можно воспользоваться плагином "Regenerate Thumbnails". После установки, функционал плагина доступен в: Инструменты » Regen. Thumbnails.

#wp image preview, #wp image thumbnails