Попытка создать свою тему для WordPress чаще всего упирается в одну и ту же ошибку: после активации самописной темы сайт показывает белый экран или сообщение «Тема повреждена: отсутствует таблица стилей». Причина почти всегда одна — в папке темы нет корректно оформленного файла style.css с обязательным заголовком, без которого WordPress просто не распознаёт тему. Именно с этого файла и начинается любая разработка.

В этом руководстве разберём, как создать собственную тему с нуля: какие файлы обязательны, как устроена иерархия шаблонов, как подключать стили и скрипты правильно, а не «в лоб». Материал ориентирован на WordPress как самую распространённую CMS, но общие принципы — структура, иерархия шаблонов, разделение логики и оформления — применимы и к другим движкам.

Что такое тема и из чего она состоит

Тема — это набор файлов, которые определяют внешний вид сайта: макет страниц, цвета, шрифты, расположение блоков. Важно понимать разделение: тема отвечает за отображение, а функциональность (формы, магазин, SEO-поля) по-хорошему должна жить в плагинах. Если вшить функционал в тему, при её смене вы потеряете часть возможностей сайта.

Минимальный набор для работающей темы на WordPress — всего два файла:

  • 📄 style.css — файл стилей с обязательным служебным заголовком, по которому система идентифицирует тему;
  • 📄 index.php — главный шаблон, универсальная «запасная» страница для любого типа контента.

На практике тема включает больше файлов: functions.php для настроек и подключения ресурсов, header.php и footer.php для шапки и подвала, отдельные шаблоны для записей, страниц и архивов. Чем детальнее структура, тем гибче управление внешним видом разных разделов.

Подготовка среды разработки

Разрабатывать тему прямо на рабочем сайте — плохая идея: любая синтаксическая ошибка в PHP может «уронить» ресурс для всех посетителей. Безопасный путь — локальный сервер на вашем компьютере. Подойдут решения вроде Local, XAMPP или OpenServer — выбор зависит от вашей операционной системы и привычек.

После установки локальной копии WordPress создайте папку для будущей темы по пути wp-content/themes/название-темы. Название папки пишите латиницей, в нижнем регистре, без пробелов — дефисы допустимы. Это техническое имя, оно не обязано совпадать с отображаемым названием темы.

💡

Работайте в редакторе с подсветкой синтаксиса PHP и проверкой ошибок (например, VS Code с расширением для PHP) — это позволит заметить опечатку до активации темы, а не после белого экрана.

Создаём обязательные файлы темы

Первый файл — style.css. Его начало должно содержать комментарий со служебными данными. Минимально достаточно указать имя темы:

/*

Theme Name: Моя первая тема

Description: Учебная тема для сайта

Author: Ваше имя

Version: 1.0

*/

Второй файл — index.php. На старте в него можно поместить простейшую разметку с «петлёй» WordPress — конструкцией, которая выводит записи. Даже примитивный вариант вроде заголовка и текста записи позволит убедиться, что тема работает, прежде чем вы займётесь дизайном.

После создания обоих файлов перейдите в админ-панель: Внешний вид → Темы. Ваша тема должна появиться в списке. Если её нет или отображается предупреждение — проверьте, что заголовок в style.css оформлен именно как комментарий и строка Theme Name присутствует.

☑️ Минимум для активации темы

Выполнено: 0 / 5
⚠️ Внимание: не редактируйте файлы чужой установленной темы напрямую. При её обновлении все ваши правки будут перезаписаны. Для доработок существующей темы создавайте дочернюю тему (child theme) — она наследует родительскую и хранит ваши изменения отдельно.

Иерархия шаблонов и разбиение на части

WordPress выбирает шаблон по понятной логике: для страницы записи сначала ищется single.php, для статической страницы — page.php, для рубрик — category.php или archive.php. Если специализированного файла нет, используется универсальный index.php. Это называется иерархией шаблонов, и её понимание избавляет от дублирования кода.

Повторяющиеся блоки выносят в отдельные файлы. Шапка подключается функцией get_header() из файла header.php, подвал — get_footer() из footer.php. Так правка меню в одном месте отразится на всех страницах сайта.

📊 Какой способ создания темы вам ближе?
Полностью с нуля, пишу весь код сам
Дочерняя тема на базе готовой
Стартовая тема (underscores и аналоги)
Только правки через кастомайзер и CSS

Файл functions.php: подключение стилей и возможностей

Файл functions.php — это «пульт управления» темой. Через него регистрируют меню навигации, включают поддержку миниатюр записей, подключают стили и скрипты. Ключевое правило: не вставляйте CSS и JS прямыми тегами в header, а используйте механизм очередей через хук wp_enqueue_scripts и функции wp_enqueue_style() и wp_enqueue_script(). Это предотвращает конфликты версий и дублирование библиотек.

Пример базовой настройки выглядит так:

function mytheme_setup() {

add_theme_support( 'title-tag' );

add_theme_support( 'post-thumbnails' );

register_nav_menus( array(

'main' => 'Главное меню',

) );

}

add_action( 'after_setup_theme', 'mytheme_setup' );

Что здесь происходит: тема заявляет, что умеет работать с миниатюрами и автоматическим тегом заголовка страницы, а также регистрирует область меню, которую пользователь заполнит через админку. Каждую возможность добавляйте осознанно — лишний код в functions.php замедляет понимание темы и повышает шанс конфликтов.

💡

Тема отвечает только за внешний вид. Любую функциональность, которая должна пережить смену дизайна, выносите в плагин.

Типичные ошибки и их диагностика

Разберём сбои, с которыми сталкиваются чаще всего, и способы их проверить.

СимптомВероятная причинаЧто проверить
Тема не видна в спискеНет заголовка в style.cssСтроку Theme Name в начале файла
Белый экран после активацииСинтаксическая ошибка PHPЛог ошибок сервера, последние правки
Стили не применяютсяСтили не подключены через enqueueНаличие wp_head() в header.php
Меню не выводитсяОбласть не зарегистрирована или не назначенаregister_nav_menus и настройки в админке
Дата и теги не выводятсяОтсутствует цикл WordPressКонструкцию have_posts() в шаблоне

Отдельно про «белый экран смерти»: чаще всего это незакрытая скобка или пропущенная точка с запятой в PHP. Включите отладку, добавив в wp-config.php на локальной копии строку define( 'WP_DEBUG', true ); — тогда вместо пустой страницы вы увидите конкретное сообщение об ошибке с номером строки.

⚠️ Внимание: режим отладки предназначен только для разработки. На действующем сайте вывод ошибок посетителям может раскрыть служебные пути и данные — после завершения работ отключайте WP_DEBUG.

Тестирование готовой темы

Прежде чем считать работу завершённой, пройдитесь по основным сценариям. Вам нужно проверить не только «красиво ли», но и «не ломается ли»:

  • ✅ Главная страница, отдельная запись, статическая страница и архив рубрики открываются корректно;
  • 📱 Вёрстка не разваливается на узком экране смартфона;
  • 🔗 Меню создаётся через админку и выводится на сайте;
  • 🖼️ Миниатюры записей отображаются там, где задумано;
  • 🧩 После отключения темы контент (записи, страницы) остаётся на месте.

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

Что такое стартовые темы

Стартовые темы вроде underscores — это «каркасы» без дизайна, где уже настроены базовая структура файлов, цикл, подключение стилей и поддержка стандартных возможностей WordPress. Они экономят время на рутине, но требуют понимания структуры — иначе легко запутаться в чужом коде.

Альтернативы: дочерняя тема и конструкторы

Создание темы с нуля — не единственный путь. Если вас устраивает существующая тема, но хочется изменить детали, создайте дочернюю тему: она состоит из style.css с указанием родителя в строке Template и файлов, которые вы хотите переопределить. Это самый безопасный способ кастомизации.

Третий вариант — блочные темы и полное редактирование сайта (Full Site Editing) в современных версиях WordPress: часть макетов собирается прямо в редакторе без написания кода. Это быстрее, но даёт меньше контроля над итоговой разметкой. Выбор зависит от задачи: для уникального дизайна и обучения — тема с нуля, для быстрых правок — дочерняя, для простых сайтов — блочный редактор.

💡

Начинайте с минимума: style.css, index.php, functions.php. Добавляйте шаблоны и возможности постепенно, проверяя результат после каждого шага.

Частые вопросы

Сколько файлов минимально нужно для темы WordPress?

Два: style.css со служебным заголовком и index.php. Всё остальное — шаблоны страниц, functions.php, header и footer — добавляется по мере необходимости.

Нужно ли знать PHP, чтобы создать свою тему?

Базовое понимание необходимо: цикл вывода записей, функции подключения шаблонов и хуки написаны на PHP. Однако для простой темы достаточно освоить небольшой набор стандартных конструкций — углублённое программирование требуется только для сложной логики.

Почему после активации темы белый экран?

Наиболее вероятная причина — синтаксическая ошибка в PHP-файле темы. Включите режим отладки через WP_DEBUG на локальной копии, чтобы увидеть текст ошибки и номер строки, затем исправьте код.

Что будет с контентом, если я сменю тему?

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

Чем дочерняя тема отличается от обычной?

Дочерняя тема наследует все файлы родительской и позволяет переопределять только нужные части. Её главное преимущество — ваши изменения не стираются при обновлении родительской темы.