Как настроить загрузку изображений в форматах avif или webp на сайт Wordpress, чтобы при невозможности их отображения использовался оригинальный формат?

Подскажите, как я могу автоматически конвертировать изображения в форматы WebP или AVIF без использования плагинов, так как некоторые хостинги не поддерживают настройки для них? Желательно решение, которое не требует внесения изменений на хостинге, может быть через код или другим способом, чтобы изображения отображались в форматах с запасом и имели fallback на JPG или PNG в случае, если другие форматы не поддерживаются.
  • 20 марта 2024 г. 19:19
Ответы на вопрос 2
Для автоматической конвертации изображений в форматы WebP или AVIF без использования плагинов и внесения изменений на хостинге, вы можете использовать следующий подход:

1. Создайте функцию в файле functions.php вашей темы или создайте плагин, который будет выполнять конвертацию изображений. Например, вот функция для конвертации изображений в формат WebP:

```php
function convert_image_to_webp($imagePath) {
    $imageInfo = pathinfo($imagePath);
    $webpPath = $imageInfo['dirname'] . '/' . $imageInfo['filename'] . '.webp';
    
    $image = imagecreatefromjpeg($imagePath); // Можете использовать другие функции в зависимости от формата изображения
    
    imagewebp($image, $webpPath);
    
    imagedestroy($image);
    
    return $webpPath;
}
```

2. Далее, вам нужно проверять, поддерживает ли браузер форматы WebP или AVIF, и при необходимости подставлять оригинальное изображение. Для этого добавьте следующий код в файл functions.php вашей темы:

```php
function replace_image_with_webp($content) {
    $doc = new DOMDocument();
    $doc->loadHTML($content);
    
    $images = $doc->getElementsByTagName('img');
    
    foreach ($images as $image) {
        $originalSrc = $image->getAttribute('src');
        $webpSrc = convert_image_to_webp($originalSrc);
        
        // Проверяем поддерживает ли браузер формат WebP
        if(strstr($_SERVER['HTTP_ACCEPT'], 'image/webp')) {
            $image->setAttribute('src', $webpSrc);
        }
    }
    
    return $doc->saveHTML();
}

add_filter('the_content', 'replace_image_with_webp');
```

Этот код будет автоматически конвертировать все изображения на вашем сайте в формат WebP и подставлять их в HTML код соответствующим образом.

Таким образом, у вас будет fallback на оригинальное изображение в форматах JPEG или PNG, если браузер не поддерживает формат WebP или AVIF.
Если хостинг "не поддерживает" (не имеет нужного ПО), то ничего не поможет. 
Либо использую хостинг, где это есть, либо бери ВПС и настраивай как тебе нужно.


Пример такой ошибки - плагин Converter for Media, текст ошибки: "Ошибка конфигурации сервера. Похоже, что запросы изображений вашего сайта обрабатываются сервером Nginx в обход Apache".

А в этом случае может помочь отключить обработку статики (всей или частично) Nginx-сом. Если это позволят настройки сервера.
Только зло это.

ЗЫ, А вообще этот гугломусор нафик не нужен. Лучше научиться оптимизировать jpg.
Похожие вопросы