В WordPress автоматическое создание уменьшенных копий изображений (thumbnail) — важная функция для оптимизации загрузки страниц и правильного отображения медиа. Однако бывают случаи, когда стандартных размеров недостаточно, либо нужно добавить свои размеры для тем или плагинов. В этой статье подробно разберём, как создавать и использовать кастомные миниатюры в WordPress, а также как программно генерировать и регенерировать их.
Что такое миниатюры (thumbnail) в WordPress и зачем они нужны
Миниатюры — это уменьшенные версии загруженных изображений, которые используются в превью постов, списках, слайдерах и прочих местах. WordPress автоматически создаёт несколько размеров при загрузке файла в медиа-библиотеку. Это позволяет экономить трафик, ускорять загрузку и корректно отображать картинки в разных местах.
По умолчанию WordPress создаёт следующие размеры: thumbnail (150×150), medium (300×300), large (1024×1024) и оригинал. Но этого может быть недостаточно для сложных тем или плагинов. Поэтому рекомендуется создавать дополнительные размеры и управлять ими.
Как добавить собственные размеры миниатюр в WordPress
Для добавления нового размера используется функция add_image_size(). Например, чтобы создать миниатюру 400×300 с обрезкой по центру, можно добавить код в файл functions.php вашей темы:
function wpboard_add_custom_image_sizes() {
add_image_size('wpboard-thumb-400x300', 400, 300, true);
}
add_action('after_setup_theme', 'wpboard_add_custom_image_sizes');Параметры функции:
'wpboard-thumb-400x300'— уникальное имя размера.400и300— ширина и высота в пикселях.true— обрезать изображение до этих размеров (hard crop). Можно указатьfalseдля пропорционального уменьшения.
После добавления нового размера новые загруженные изображения будут автоматически получать этот размер.
Как вывести миниатюры нужного размера в шаблонах WordPress
Для вывода миниатюры поста используется функция the_post_thumbnail(). Чтобы вывести созданный нами размер, пишем:
if (has_post_thumbnail()) {
the_post_thumbnail('wpboard-thumb-400x300');
}Это гарантирует, что будет выведена именно наша кастомная миниатюра.
Пример использования в цикле WordPress
while (have_posts()) : the_post();
if (has_post_thumbnail()) {
the_post_thumbnail('wpboard-thumb-400x300');
}
the_title('<h2>', '</h2>');
endwhile;Как регенерировать миниатюры для старых изображений
После добавления новых размеров старые изображения не имеют этих миниатюр. Чтобы их создать, нужно регенерировать миниатюры. Для этого используют плагин Regenerate Thumbnails.
Плагин позволяет массово сгенерировать все размеры для уже загруженных медиафайлов. Это обязательный шаг после добавления новых размеров.
Автоматическое создание миниатюр для изображений, загружаемых вне медиа-библиотеки
Иногда изображения загружаются программно или через сторонние сервисы, и миниатюры не создаются автоматически. В таких случаях можно использовать функцию wpboard_generate_attachment_thumbnails(), чтобы программно создать миниатюры.
function wpboard_generate_attachment_thumbnails($attachment_id) {
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata($attachment_id, get_attached_file($attachment_id));
wp_update_attachment_metadata($attachment_id, $attach_data);
}Использование:
$attachment_id = 123; // ID вложения
wpboard_generate_attachment_thumbnails($attachment_id);Это гарантирует, что для данного вложения будут созданы все размеры, добавленные через add_image_size.
Полезные плагины для работы с миниатюрами
- Regenerate Thumbnails — массовая регенерация миниатюр.
- Simple Image Sizes — позволяет управлять размерами изображений через админку без кода.
- Imsanity — автоматически уменьшает слишком большие изображения при загрузке, что помогает оптимизировать сайт.
Также для улучшения работы с изображениями можно использовать плагин Clearfy Pro, который содержит расширенные опции оптимизации медиа.
Советы по оптимизации миниатюр и изображений
Для быстрого и стабильного сайта важно:
- Создавать только нужные размеры миниатюр, чтобы не занимать лишнее место на сервере.
- Использовать сжатие изображений без потери качества (например, через плагины оптимизации).
- Регенерировать миниатюры после изменения размеров.
- Подключать lazy load для изображений для ускорения загрузки страниц.
Соблюдение этих рекомендаций обеспечит быструю и корректную работу сайта с изображениями.