Попытка создать свою тему для 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 присутствует.
☑️ Минимум для активации темы
⚠️ Внимание: не редактируйте файлы чужой установленной темы напрямую. При её обновлении все ваши правки будут перезаписаны. Для доработок существующей темы создавайте дочернюю тему (child theme) — она наследует родительскую и хранит ваши изменения отдельно.
Иерархия шаблонов и разбиение на части
WordPress выбирает шаблон по понятной логике: для страницы записи сначала ищется single.php, для статической страницы — page.php, для рубрик — category.php или archive.php. Если специализированного файла нет, используется универсальный index.php. Это называется иерархией шаблонов, и её понимание избавляет от дублирования кода.
Повторяющиеся блоки выносят в отдельные файлы. Шапка подключается функцией get_header() из файла header.php, подвал — get_footer() из footer.php. Так правка меню в одном месте отразится на всех страницах сайта.
Файл 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 на локальной копии, чтобы увидеть текст ошибки и номер строки, затем исправьте код.
Что будет с контентом, если я сменю тему?
Записи, страницы и медиафайлы хранятся в базе данных и не зависят от темы — они сохранятся. Может измениться только их отображение. Исчезнуть могут элементы, вшитые в старую тему: нестандартные поля, шорткоды, области виджетов.
Чем дочерняя тема отличается от обычной?
Дочерняя тема наследует все файлы родительской и позволяет переопределять только нужные части. Её главное преимущество — ваши изменения не стираются при обновлении родительской темы.