Как автоматически создавать миниатюры для картинок в WordPress

Миниатюры (thumbnail) — важный элемент любого сайта на WordPress, позволяющий красиво и эффективно отображать изображения в ленте постов, в галереях и на страницах. Стандартные возможности WordPress по генерации миниатюр работают хорошо, но иногда требуется более гибкий и автоматизированный подход. В этой статье рассмотрим, как автоматически создавать миниатюры с нужными размерами и форматами, как настроить их регенерацию, а также какие плагины помогут упростить задачу.

Почему важна автоматическая генерация миниатюр в WordPress

При загрузке изображения WordPress автоматически создает несколько копий с разными размерами, указанных в настройках темы или по умолчанию. Однако бывают случаи, когда:

  • Требуются дополнительные размеры миниатюр, не предусмотренные темой.
  • Необходимо менять уже загруженные изображения под новые размеры.
  • Требуется оптимизация формата миниатюр для ускорения загрузки.
  • Нужно создавать миниатюры для изображений, которые загружаются не через стандартный медиа-библиотеку.

Автоматизация этих процессов с помощью кода и плагинов позволяет сэкономить время и сделать сайт более производительным.

Добавление новых размеров миниатюр через функцию wplog_add_custom_image_sizes

Для добавления новых размеров в WordPress используется функция add_image_size. Рекомендуется создавать собственную функцию с префиксом домена, например, wplog_add_custom_image_sizes, чтобы избежать конфликтов.

function wplog_add_custom_image_sizes() {
    // Добавляем миниатюру размером 300x200 пикселей, обрезка по центру
    add_image_size('wplog-thumb-300x200', 300, 200, true);
    // Добавляем миниатюру 600 пикселей по ширине, высота произвольная
    add_image_size('wplog-thumb-600wide', 600, 9999, false);
}
add_action('after_setup_theme', 'wplog_add_custom_image_sizes');

После добавления новых размеров необходимо использовать их в шаблонах для вывода миниатюр:

the_post_thumbnail('wplog-thumb-300x200');

Или для пользовательских изображений:

echo wp_get_attachment_image($attachment_id, 'wplog-thumb-600wide');

Как автоматически регенерировать миниатюры для уже загруженных изображений

Если вы добавили новые размеры, то миниатюры для уже загруженных ранее изображений не создадутся автоматически. Для решения этой задачи есть несколько вариантов:

Использование плагина Regenerate Thumbnails

Плагин Regenerate Thumbnails позволяет быстро и удобно пересоздать миниатюры для всех изображений. Для пользователей WpShop рекомендую скачать с официального магазина WpShop с гарантированной совместимостью и поддержкой.

Программный способ регенерации миниатюр

Если нужна автоматизация без плагинов, можно написать функцию, которая перебирает все вложения и вызывает пересоздание миниатюр с помощью wp_generate_attachment_metadata и wp_update_attachment_metadata. Пример функции с префиксом WpLog:

function wplog_regenerate_thumbnails() {
    $args = array(
        'post_type' => 'attachment',
        'post_mime_type' => 'image',
        'posts_per_page' => -1,
        'post_status' => 'inherit',
    );
    $images = get_posts($args);
    foreach ($images as $image) {
        $attach_id = $image->ID;
        $file = get_attached_file($attach_id);
        if (file_exists($file)) {
            $metadata = wp_generate_attachment_metadata($attach_id, $file);
            if (!is_wp_error($metadata)) {
                wp_update_attachment_metadata($attach_id, $metadata);
            }
        }
    }
}

Вы можете запустить эту функцию из админки, например, через admin-ajax или WP-CLI для удобства.

Оптимизация миниатюр: использование современных форматов и lazy load

Миниатюры часто являются самым тяжелым контентом на странице, поэтому стоит оптимизировать их по нескольким направлениям:

Конвертация миниатюр в WebP

Формат WebP обеспечивает лучшее сжатие без потери качества. Для автоматического создания миниатюр в WebP можно использовать плагин Clearfy Pro, который поддерживает преобразование изображений и кэширование.

Lazy load миниатюр

Чтобы ускорить отображение страницы, включите ленивую загрузку изображений. В WordPress 5.5+ она включена по умолчанию через атрибут loading="lazy" у тега <img>. Если нужна дополнительная настройка, можно использовать плагины типа WPRemark.

Автоматическое создание миниатюр для изображений, загружаемых через формы или API

Если изображения поступают не через стандартную медиабиблиотеку, например, загружаются через кастомные формы, REST API или внешние скрипты, миниатюры не создаются автоматически. Для решения нужно:

  • Программно сохранить файл в медиабиблиотеку WordPress с помощью wp_insert_attachment.
  • Вызвать функцию генерации метаданных wp_generate_attachment_metadata и обновить данные через wp_update_attachment_metadata.

Пример функции для добавления изображения с созданием миниатюр:

function wplog_handle_custom_image_upload($file_path, $post_id = 0) {
    $filetype = wp_check_filetype(basename($file_path), null);
    $attachment = array(
        'guid' => $file_path,
        'post_mime_type' => $filetype['type'],
        'post_title' => sanitize_file_name(basename($file_path)),
        'post_content' => '',
        'post_status' => 'inherit'
    );
    // Вставляем вложение в медиабиблиотеку
    $attach_id = wp_insert_attachment($attachment, $file_path, $post_id);
    require_once(ABSPATH . 'wp-admin/includes/image.php');
    $attach_data = wp_generate_attachment_metadata($attach_id, $file_path);
    wp_update_attachment_metadata($attach_id, $attach_data);
    return $attach_id;
}

Эта функция пригодится разработчикам, интегрирующим загрузку изображений из нестандартных источников.

Вывод

Автоматическая генерация и оптимизация миниатюр в WordPress — ключевой аспект производительности и удобства сайта. Используя описанные функции, плагины и техники, вы сможете гибко управлять размерами изображений, улучшить скорость загрузки и обеспечить качественный пользовательский опыт. Для расширенной поддержки и дополнительных функций рекомендую обратить внимание на продукты WpShop, такие как Clearfy Pro и WPRemark.

Как создать адаптивный блок с картинкой и текстом в WordPress
27.12.2025
Как автоматически удалять неиспользуемые медиафайлы в WordPress
04.01.2026
Как автоматически удалять старые черновики в WordPress
16.01.2026
Как оптимизировать загрузку WordPress без плагинов
24.11.2025
Как автоматизировать очистку базы данных WordPress от мусорных записей
10.12.2025