После обновления темы пропали стили WordPress — что делать
Обновили тему — а сайт как голый HTML: рамки, чёрный текст на белом фоне, всё разъехалось. CSS не подключился. Чаще всего причина в кэше, версиях файлов или кривом дочерней теме. Вот 4 причины и пошаговое решение — от самой частой к редкой.
Стили пропадают после обновления темы из-за кэша браузера, устаревшего CDN, сброса enqueue-зависимостей в functions.php или конфликта дочерней темы с родительской. В 80% случаев помогает очистка кэша браузера + очистка кэша плагина кэширования + перегенерация CSS-файлов темы (если используется кастомайзер). Если не помогло — проверьте version-параметр в wp_enqueue_style и файл style.css в дочерней теме.
Почему стили пропадают: 4 основные причины
1. Кэш браузера и кэширующие плагины
Самая частая причина. Браузер запомнил старый style.css и не загружает новый. После обновления темы WordPress меняет версию CSS-файла, но кэш на стороне клиента или сервера отдаёт старый файл. Особенно часто на Beget и Timeweb, где включён nginx-fastcgi-cache.
То же самое с плагинами кэширования: WP Rocket, LiteSpeed Cache, Cache Enabler. Они хранят минифицированные/объединённые CSS. После обновления темы эти файлы надо перегенерировать.
2. Слетели настройки кастомайзера
Некоторые темы хранят кастомные CSS в базе данных (опция theme_mods_{theme_slug}). При обновлении темы разработчик мог изменить имя slug-а или структуру опций. Тогда WordPress не находит сохранённые стили и отдаёт базовую тему без доработок.
3. Кривой enqueue в дочерней теме
Если вы используете дочернюю тему, wp_enqueue_style может ссылаться на несуществующий файл. После обновления родительской темы пути к CSS могли измениться, а дочерняя тема продолжает подключать старые файлы. Типичная ситуация: get_template_directory_uri() вместо get_stylesheet_uri() — и после обновления подключается не тот CSS.
4. Конфликт родительской и дочерней темы
Родительская тема обновилась, а дочерняя осталась старой. В новой версии родительской темы изменилась структура header.php или способ подключения стилей. Дочерняя тема переопределяет header.php, но не обновляет вызов wp_head() или wp_enqueue_style — стили не подключаются.
Пошаговое решение
Шаг 1: Очистите кэш браузера
Начните с самого простого. В Chrome: Cmd+Shift+R (или Ctrl+F5 на Windows) — жёсткая перезагрузка без кэша. Если стили появились — проблема была в кэше браузера. Если нет — идём дальше.
Шаг 2: Очистите кэш плагина кэширования
Зайдите в админку WordPress и очистите все кэши:
- WP Rocket → Настройки → WP Rocket → Очистить кэш
- LiteSpeed Cache → LiteSpeed Cache → Очистить всё
- Cache Enabler → Настройки → Cache Enabler → Очистить кэш
- Autoptimize → Autoptimize → Очистить кэш CSS/JS
Если сайт на Beget, дополнительно сбросьте кэш nginx через панель управления хостингом: Управление сайтом → Очистить кэш.
Шаг 3: Перегенерация CSS темы
Темы с кастомайзером (например, Customify, Astra, Blocksy) хранят CSS в базе данных или в файлах /wp-content/uploads/. После обновления эти файлы могут устареть. Зайдите в Настройки → Кастомайзер → нажмите «Опубликовать» (даже без изменений) — тема перегенерирует CSS-файлы.
Если тема использует Dynamic CSS (GeneratePress, Neve), пересохраните Настройки темы: Внешний вид → Настройки → Сохранить.
Шаг 4: Проверьте version-параметр в functions.php
Откройте файл дочерней темы /wp-content/themes/ваша-дочерняя-тема/functions.php и найдите вызов wp_enqueue_style. Параметр version должен быть либо числом (время обновления), либо null (авто-версия от WordPress):
function my_theme_enqueue_styles() {
$parent_style = 'parent-style';
wp_enqueue_style($parent_style,
get_template_directory_uri() . '/style.css',
array(),
filemtime(get_template_directory() . '/style.css')
); // version = время изменения файла — кэш сбрасывается сам
wp_enqueue_style('child-style',
get_stylesheet_directory_uri() . '/style.css',
array($parent_style),
filemtime(get_stylesheet_directory() . '/style.css')
);
}
add_action('wp_enqueue_scripts', 'my_theme_enqueue_styles');
Если version захардкожен (например, '1.0.0') — после обновления темы браузер не поймёт, что CSS изменился. Меняйте version или используйте filemtime() для авто-версионирования.
Шаг 5: Проверьте файл style.css в дочерней теме
В дочерней теме обязательно должен быть style.css с корректным Template-заголовком:
/*
Theme Name: Моя дочерняя тема
Template: родительская-тема
*/
Ошибка в Template (например, пробел, другой регистр) — WordPress не найдёт родительскую тему и не подключит её стили. Проверьте имя папки родительской темы в /wp-content/themes/ и Template-заголовок в style.css дочерней.
Шаг 6: Отключите минификацию CSS
Плагины Autoptimize, WP Rocket, LiteSpeed Cache минифицируют CSS, объединяя файлы в один. После обновления темы пути внутри CSS-файлов могут измениться. Временно отключите объединение и минификацию CSS в плагине — если стили вернулись, пересоздайте кэш минифицированных файлов.
На Beget это частая проблема: nginx-кэш + плагин кэширования + минификация дают тройной слой, где обновление темы теряется. Отключайте минификацию, очищайте оба кэша, включайте обратно.
Проверка результата
Откройте сайт в режиме инкогнито (Chrome: Cmd+Shift+N). Если стили есть — кэш браузера был причиной. Откройте Инструменты разработчика (Cmd+Opt+I) → вкладка Network → обновите страницу. Найдите style.css в списке — статус должен быть 200, а не 304 (из кэша). Если 304 — снова жмите очистку кэша.
Дополнительно проверьте консоль браузера (Console в DevTools): ошибки вроде Failed to load resource: net::ERR_NAME_NOT_RESOLVED указывают на битые пути к CSS-файлам. Сверьте URL в ошибке с реальным расположением файла на сервере.
Когда способ не сработает
Обновили тему, и теперь всё едет. Не только стили пропали, но и вёрстка развалилась. Это значит, что в новой версии темы изменилась HTML-структура (header, footer, сайдбар). Поможет только правка CSS под новую структуру или откат темы к предыдущей версии.
Стили загружаются, но не применяются. Проверьте специфичность селекторов: старая тема использовала .widget-title, а новая — .widget__title. CSS написан под новую разметку, а HTML остался старый. Решение: обновить дочернюю тему или откатить родительскую.
Стили есть на главной, но нет на внутренних страницах. Проверьте условные теги в functions.php: возможно, wp_enqueue_style обёрнут в if (is_front_page()). После обновления разработчик изменил Conditional Tag API — проверьте документацию функции.
Сайт на VPS, и CSS файлы 403. После обновления темы изменились права на файлы (chmod). На VPS с Nginx + PHP-FPM это частая история: закройте консолью права на /wp-content/themes/:
find /var/www/site/wp-content/themes -type f -exec chmod 644 {} \;
find /var/www/site/wp-content/themes -type d -exec chmod 755 {} \;
Частые вопросы
/wp-content/uploads/astra/. Очистите эту папку через FTP, затем зайдите в Кастомайзер → Опубликовать — Astra пересоздаст CSS-файлы. Дополнительно очистите кэш плагина кэширования.@font-face в style.css: если указаны относительные пути — тема могла сменить структуру папок. Скопируйте шрифты в новое расположение или исправьте пути.wp-block-library. Добавьте в functions.php: add_theme_support('wp-block-styles'); и wp_enqueue_style('wp-block-library');. Для полного контроля используйте current_theme_supports('wp-block-styles').Как не допустить повторения
Перед обновлением темы сделайте бэкап сайта: база данных + wp-content/themes/. На Beget это делается в разделе «Резервное копирование» — 1 клик, 2 минуты. Если что-то пошло не так — восстановите бэкап и обновляйтесь заново.
Используйте дочернюю тему с авто-версионированием через filemtime — кэш будет сбрасываться автоматически при каждом изменении CSS. И держите плагин кэширования под контролем: после любого обновления темы очищайте его кэш прежде, чем проверять результат.
Пропали стили и не можете разобраться?
Помогу восстановить внешний вид сайта за 1 день. Диагностика, правка CSS, настройка кэширования.