Обновление WordPress, поля ACF, переезд на VPS, WebP без оригиналов

Прототип под ваше ТЗ: порядок работ, как будут выглядеть поля ACF, как работает конвертация и сколько места она освобождает. Цифры в калькуляторе условные, пока я не видел ваш сайт.

Порядок работ (3 дня, простой сайта до 15 минут)

ДеньШагКак проверяю
1Полная копия файлов и базы, развёртывание на стенде. Обновление ядра WordPress и всех плагинов по одному.сайт открывается, ошибок в debug.log нет
1Плагины, которые не поддерживают новое ядро или PHP: список, замена или правка.каждая страница отдаёт 200
2Правка выбранных страниц: контент выносится в поля ACF, шаблон читает поля, редактирование идёт из админки.правка поля меняет страницу
2Настройка VPS: nginx, PHP-FPM, MariaDB, SSL, кэш, резервные копии.ответ сервера меньше 300 мс
3Конвертация изображений в WebP, перенос базы и файлов, переключение DNS в ночное окно.старый хостинг остаётся запасным 7 дней

Поля ACF вместо правки вёрстки

Пример группы полей для страницы. Редактор меняет текст и картинку в админке, шаблон подставляет их сам.

ПолеТип ACFГде выводится
hero_titleТекстзаголовок первого экрана
hero_imageИзображение (ID)фон первого экрана, сразу WebP
about_textРедактор (WYSIWYG)основной текст страницы
blocksПовторительсписок блоков: заголовок, текст, ссылка
<h1><?php the_field('hero_title'); ?></h1>
<?php echo wp_get_attachment_image( get_field('hero_image'), 'large' ); ?>
<?php while ( have_rows('blocks') ) : the_row(); ?>
  <h3><?php the_sub_field('title'); ?></h3>
<?php endwhile; ?>

WebP при загрузке, оригинал не остаётся на сервере

Хук срабатывает в момент загрузки в медиатеку, оригинал удаляется, в базе остаётся только WebP. Старую медиатеку конвертирует отдельный пакетный скрипт, перед запуском делается резервная копия.

add_filter('wp_handle_upload', function($f){
  if ( ! in_array($f['type'], ['image/jpeg','image/png']) ) return $f;
  $img  = wp_get_image_editor($f['file']);
  $webp = preg_replace('/\.(jpe?g|png)$/i', '.webp', $f['file']);
  if ( ! is_wp_error($img) && ! is_wp_error($img->save($webp, 'image/webp')) ) {
    unlink($f['file']);                 // оригинал не храним
    $f['file'] = $webp; $f['type'] = 'image/webp';
    $f['url']  = preg_replace('/\.(jpe?g|png)$/i', '.webp', $f['url']);
  }
  return $f;
});

Сколько места и трафика освободит WebP

Подставьте свои числа. Для WebP я беру ориентир 65 процентов экономии к JPEG, точное значение на вашем сайте покажет пробная пачка из 50 файлов.

Сейчас
-
После WebP
-
Освободится
-

Что останется у вас после работы

1Сайт на последней версии WordPress и плагинов, список изменений по каждому плагину.
2Страницы на ACF, короткая инструкция для редактора.
3Сайт на VPS с SSL, кэшем и ежедневной копией.
4Правки в течение 14 дней после сдачи бесплатно.