Почему важно оптимизировать картинки в WordPress
Изображения занимают значительную часть веса веб-страниц, и их неправильная оптимизация может сильно замедлить загрузку сайта. Для WordPress, где часто используются большие медиа-библиотеки, оптимизация картинок — ключевой фактор для улучшения скорости, SEO и пользовательского опыта.
Без оптимизации страницы загружаются медленно, что снижает конверсию и индексирование в поисковиках. Важно найти баланс между качеством изображения и его размером, чтобы не потерять визуальную привлекательность.
Кроме того, современные браузеры поддерживают форматы WebP и AVIF, которые экономят трафик без потери качества, но для WordPress нужно правильно внедрять эти форматы.
Основные методы оптимизации изображений в WordPress
Сжатие и изменение размера изображений
Первый и самый простой способ — уменьшить размеры и сжать изображения перед загрузкой. Но если у вас уже есть медиатека с большими файлами, можно автоматизировать процесс прямо в WordPress.
Для этого отлично подойдет плагин Clearfy Pro, который умеет оптимизировать и сжимать картинки без потери качества, а также менять их размеры под разные устройства. Он позволяет настроить автоматическое сжатие при загрузке и оптимизацию уже загруженных изображений.
Пример функции для изменения размера и сжатия изображения при загрузке с использованием стандартных функций WordPress:
function wplite_resize_image_on_upload( $metadata ) {
if ( isset( $metadata['file'] ) ) {
$upload_dir = wp_upload_dir();
$image_path = $upload_dir['basedir'] . '/' . $metadata['file'];
$editor = wp_get_image_editor( $image_path );
if ( ! is_wp_error( $editor ) ) {
$editor->resize( 1200, 800, false ); // Максимальная ширина 1200px
$editor->set_quality( 85 ); // Качество сжатия 85%
$editor->save( $image_path );
}
}
return $metadata;
}
add_filter( 'wp_generate_attachment_metadata', 'wplite_resize_image_on_upload' );Этот код уменьшит размеры загружаемых картинок и установит качество сжатия в 85%, что обычно достаточно для сохранения визуальной четкости.
Использование современных форматов WebP и AVIF
Чтобы дополнительно ускорить загрузку, стоит использовать форматы WebP и AVIF, которые дают меньший размер при том же качестве. WordPress с версии 5.8 поддерживает WebP, но не всегда автоматически конвертирует загружаемые файлы.
Можно использовать плагин WPRemark, который умеет конвертировать и выводить WebP и AVIF версии изображений для браузеров, которые их поддерживают, автоматически подставляя нужный формат.
Если хочется сделать конвертацию WebP самостоятельно, можно использовать PHP-библиотеки, например, Imagick. Вот пример функции для конвертации в WebP при загрузке:
function wplite_convert_to_webp_on_upload( $metadata ) {
$upload_dir = wp_upload_dir();
$image_path = $upload_dir['basedir'] . '/' . $metadata['file'];
$image_info = getimagesize( $image_path );
$mime_type = $image_info['mime'];
if ( in_array( $mime_type, [ 'image/jpeg', 'image/png' ] ) && extension_loaded( 'imagick' ) ) {
$webp_path = preg_replace( '/\.(jpe?g|png)$/i', '.webp', $image_path );
$imagick = new Imagick( $image_path );
$imagick->setImageFormat( 'webp' );
$imagick->setImageCompressionQuality( 85 );
$imagick->writeImage( $webp_path );
$imagick->clear();
$imagick->destroy();
}
return $metadata;
}
add_filter( 'wp_generate_attachment_metadata', 'wplite_convert_to_webp_on_upload' );Этот код создает WebP копию для каждого загруженного JPEG/PNG изображения, если на сервере доступен Imagick.
Ленивая загрузка (Lazy Load) изображений в WordPress
Еще один способ ускорить сайт — откладывать загрузку изображений, которые изначально не видны пользователю, чтобы они загружались только при прокрутке страницы.
WordPress с версии 5.5 уже имеет встроенную поддержку lazy load для <img>, но иногда нужны более продвинутые решения, например, для фоновых изображений или картинок в сложных конструкциях.
Для этого можно использовать плагин ABC Pagination с расширенными возможностями lazy load или другие легкие плагины, которые позволяют тонко настраивать загрузку изображений.
Пример простого добавления lazy load в теге изображения вручную через фильтр:
function wplite_add_lazyload_attribute( $content ) {
$content = preg_replace('/<img(.*?)src=/i', '<img$1loading="lazy" src=', $content);
return $content;
}
add_filter( 'the_content', 'wplite_add_lazyload_attribute' );<Этот код добавляет атрибут loading="lazy" ко всем изображениям в контенте, что подсказывает браузеру отложить их загрузку.
Оптимизация изображений с помощью CDN и кеширования
Чтобы ускорить загрузку картинок для посетителей из разных регионов, стоит использовать CDN. Многие сервисы CDN умеют автоматически оптимизировать и конвертировать изображения под устройство и браузер пользователя.
Если у вас есть плагин кеширования, например, WP Rocket или подобный, он часто поддерживает интеграцию с CDN и оптимизацию изображений.
Пример интеграции с CDN можно сделать через фильтр для замены URL медиафайлов:
function wplite_replace_image_url_with_cdn( $url ) {
$cdn_url = 'https://cdn.example.com';
$upload_url = wp_upload_dir()['baseurl'];
if ( strpos( $url, $upload_url ) === 0 ) {
$url = str_replace( $upload_url, $cdn_url, $url );
}
return $url;
}
add_filter( 'wp_get_attachment_url', 'wplite_replace_image_url_with_cdn' );<Замените https://cdn.example.com на адрес вашего CDN. Этот код перенаправит загрузку всех медиафайлов через CDN, улучшая скорость загрузки.
Выводы и рекомендации по оптимизации картинок в WordPress
Оптимизация изображений — это комплексный процесс, включающий:
- Сжатие и изменение размеров при загрузке — экономит место и ускоряет загрузку.
- Использование современных форматов WebP и AVIF — снижает вес без потери качества.
- Ленивая загрузка — улучшает скорость начальной загрузки страниц.
- Подключение CDN — ускоряет доставку контента пользователям из разных регионов.
Для большинства задач можно использовать плагины, например, Clearfy Pro и WPRemark, которые значительно упрощают задачи оптимизации и конвертации изображений. Если вы любите точечные решения — используйте приведенные примеры кода для интеграции в свои проекты.
Следуя этим рекомендациям, вы сможете значительно ускорить загрузку сайта без ущерба для визуальной части, что положительно скажется на поведении пользователей и SEO.