Автоматическая оптимизация изображений WordPress: Конвертация в WebP и сжатие

  • Главная
  • Вебмастер
  • Автоматическая оптимизация изображений WordPress: Конвертация в WebP и сжатие
Автоматическая оптимизация изображений
ДатаОкт 25, 2025

Почему оптимизация изображений критически важна для WordPress

В современном вебе оптимизация изображений является одним из ключевых факторов успеха сайта. Медленная загрузка страниц приводит к потере посетителей, ухудшению поведенческих факторов и снижению позиций в поисковых системах. Представленный код решает эти проблемы путем автоматической конвертации и сжатия изображений.

Ключевые преимущества автоматической оптимизации изображений

  • Ускорение загрузки страниц на 30-50%
  • Экономия трафика и места на хостинге
  • Улучшение SEO благодаря лучшей скорости
  • Автоматизация процесса — не требует ручных действий

Как работает код автоматической конвертации в WebP

Основной механизм конвертации

Код использует фильтр wp_handle_upload_prefilter для перехвата загружаемых изображений. При загрузке файлов форматов JPEG, JPG, PNG и AVIF система автоматически создает их WebP-версии и сравнивает размеры.

Интеллектуальное принятие решений

  • Конвертация происходит только если WebP-версия минимум на 10% меньше оригинала
  • Автоматическое определение оптимального формата для каждого изображения
  • Сохранение баланса между качеством и размером файла

Технические особенности реализации

Настройки качества и размеров

  • Максимальный размер: 1280px по большей стороне
  • Качество WebP: 75% (оптимальный баланс)
  • Качество других форматов: 70%
  • Удаление метаданных: strip для уменьшения размера

Поддержка формата WebP в WordPress

Код включает три важных функции для работы с WebP:

  • Добавление WebP в разрешенные MIME-типы
  • Корректное определение типа файла
  • Правильная обработка метаданных

Вот сам код:


// Конвертация в WebP при загрузке изображений
add_filter('wp_handle_upload_prefilter', 'convert_to_webp_before_upload');
function convert_to_webp_before_upload($file) {
    $supported_types = ['image/jpeg', 'image/jpg', 'image/png', 'image/avif'];
    
    if (!in_array($file['type'], $supported_types)) {
        return $file;
    }
    
    $tmp_path = $file['tmp_name'];
    $original_size = filesize($tmp_path);
    
    // Создаем временный файл WebP
    $webp_path = $tmp_path . '.webp';
    $max_size = 1280;
    $quality = 75;
    
    // Конвертируем в WebP с оптимизацией
    $command = "convert '{$tmp_path}' -resize {$max_size}x{$max_size}\> -quality {$quality} -strip '{$webp_path}'";
    shell_exec($command);
    
    if (file_exists($webp_path)) {
        $webp_size = filesize($webp_path);
        
        // Используем WebP только если он меньше оригинала
        if ($webp_size < $original_size * 0.9) { // Если минимум на 10% меньше // Заменяем оригинал на WebP unlink($tmp_path); rename($webp_path, $tmp_path); // Обновляем информацию о файле $file['type'] = 'image/webp'; $file['name'] = pathinfo($file['name'], PATHINFO_FILENAME) . '.webp'; $file['size'] = $webp_size; error_log("Конвертировано в WebP: {$original_size} → {$webp_size} bytes"); } else { // WebP не дал выигрыша - удаляем временный файл unlink($webp_path); error_log("WebP не эффективен для: {$file['name']}"); } } return $file; } // Разрешаем загрузку WebP файлов add_filter('upload_mimes', 'add_webp_support'); function add_webp_support($mimes) { $mimes['webp'] = 'image/webp'; return $mimes; } // Правильное определение MIME типа для WebP add_filter('wp_check_filetype_and_ext', 'fix_webp_mime_type', 10, 4); function fix_webp_mime_type($types, $file, $filename, $mimes) { if (strpos($filename, '.webp') !== false) { $types['ext'] = 'webp'; $types['type'] = 'image/webp'; } return $types; } // Обновляем функцию сжатия для работы с WebP add_action('add_attachment', 'force_compress_new_images'); function force_compress_new_images($attachment_id) { $file_path = get_attached_file($attachment_id); if (!file_exists($file_path)) return; $file_type = wp_check_filetype($file_path); // Если это уже WebP - просто обновляем метаданные if ($file_type['type'] === 'image/webp') { $metadata = wp_generate_attachment_metadata($attachment_id, $file_path); wp_update_attachment_metadata($attachment_id, $metadata); return; } // Для остальных форматов - стандартное сжатие $max_size = 1280; $quality = 70; if (strpos($file_type['type'], 'image/') === 0) { $command = "convert '{$file_path}' -resize {$max_size}x{$max_size}\> -quality {$quality} -strip '{$file_path}'";
        shell_exec($command);
        
        $metadata = wp_generate_attachment_metadata($attachment_id, $file_path);
        wp_update_attachment_metadata($attachment_id, $metadata);
    }
}

// Отключаем ненужные размеры изображений
add_filter('intermediate_image_sizes_advanced', 'disable_unused_sizes');
function disable_unused_sizes($sizes) {
    unset($sizes['medium_large']);
    unset($sizes['1536x1536']);
    unset($sizes['2048x2048']);
    return $sizes;
}

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

Проблема избыточных миниатюр в WordPress

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

Отключаемые размеры изображений

  • medium_large (768px)
  • 1536×1536 (2x средний размер)
  • 2048×2048 (большой размер 2x)

SEO-преимущества автоматической оптимизации изображений

Влияние на поисковые системы

Скорость загрузки является официальным ранжирующим фактором Google. Оптимизированные изображения напрямую влияют на:

  • Показатели Core Web Vitals
  • Время взаимодействия (Time to Interactive)
  • Скорость отрисовки контента (LCP)

Дополнительные SEO-бонусы

  • Уменьшение bounce rate благодаря быстрой загрузке
  • Улучшение мобильного пользовательского опыта
  • Экономия трафика для мобильных пользователей

Практические результаты внедрения

Ожидаемые улучшения

  • Сокращение размера изображений: 60-80%
  • Ускорение загрузки страниц: 30-50%
  • Экономия места на хостинге: до 70%
  • Улучшение SEO-показателей: заметный рост позиций

Рекомендации по внедрению

Для максимальной эффективности рекомендуется:

  • Предварительно оптимизировать существующие изображения
  • Протестировать настройки качества для конкретного сайта
  • Регулярно мониторить результаты оптимизации
  • Использовать кэширование для дополнительного ускорения

Заключение

Представленный код для автоматической оптимизации изображений WordPress представляет собой комплексное решение для ускорения сайта и улучшения пользовательского опыта. Благодаря интеллектуальной конвертации в WebP, сжатию и отключению ненужных размеров, вы получаете современный, быстрый и SEO-оптимизированный сайт без постоянного ручного вмешательства.

Добавить комментарий

Get started today

With Phox Shared Hosting you get all the features, tools

© 2016-2023 Phox inc. all rights reserved.