Создаем свой шаблон для WordPress с нуля

WordPress — это мощная и гибкая CMS, которая позволяет создавать уникальные сайты с помощью тем (шаблонов). В этой статье мы подробно рассмотрим, как создать собственный шаблон для WordPress с нуля, без использования готовых тем. Это поможет лучше понять внутреннюю структуру темы, а также даст возможность создавать максимально оптимизированные и легкие решения.

Что такое шаблон WordPress и из чего он состоит

Шаблон WordPress — это набор файлов, которые определяют внешний вид и поведение сайта. Основные компоненты шаблона:

  • Файлы шаблонов PHP: index.php, single.php, page.php, archive.php и другие — отвечают за отображение различных типов страниц.
  • Стиль: style.css — файл, содержащий стили темы и метаинформацию.
  • Функции: functions.php — файл, в котором регистрируются функции темы, поддержка различных возможностей WordPress, подключаются скрипты и стили.
  • Дополнительные файлы: header.php, footer.php, sidebar.php — части шаблона, которые подключаются в разные места страниц.

Без этих базовых файлов тема работать не будет.

Подготовка структуры шаблона

Для начала создаем папку нашей темы, например, wptemplates-theme в каталоге wp-content/themes. Внутри создадим необходимые файлы:

  • style.css
  • index.php
  • functions.php
  • header.php
  • footer.php

В style.css обязательно прописываем шапку темы, чтобы WordPress распознал ее:

/*
Theme Name: WPTemplates Theme
Theme URI: https://wptemplates.ru
Author: Ваше Имя
Author URI: https://wptemplates.ru
Description: Простой шаблон WordPress, созданный с нуля
Version: 1.0
License: GNU General Public License v2 or later
Text Domain: wptemplates-theme
*/

Этот комментарий обязателен для регистрации темы в админке.

Создание базового файла index.php

Файл index.php — главный шаблон, который используется, если для конкретного типа страницы нет специализированного шаблона. Пример минимального кода:

<?php get_header(); ?>

<main>
  <h1><?php bloginfo('name'); ?></h1>
  <?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
      <article>
        <h2><?php the_title(); ?></h2>
        <div><?php the_content(); ?></div>
      </article>
    <?php endwhile; ?>
  <?php else : ?>
    <p>Записей не найдено.</p>
  <?php endif; ?>
</main>

<?php get_footer(); ?>

Этот код выводит заголовок сайта, затем посты блога, если они есть, или сообщение об их отсутствии.

Подключение стилей и скриптов через functions.php

Вместо прямого подключения CSS и JS в header.php, лучше использовать функцию wp_enqueue_scripts. Это позволит избежать конфликтов и обеспечит правильную загрузку ресурсов. Добавим в functions.php следующий код:

<?php
function wptemplates_theme_enqueue_scripts() {
    wp_enqueue_style('wptemplates-style', get_stylesheet_uri());
    wp_enqueue_script('wptemplates-script', get_template_directory_uri() . '/js/script.js', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'wptemplates_theme_enqueue_scripts');

Здесь мы подключаем основной стиль темы и дополнительный скрипт js/script.js (его нужно создать).

Создаем header.php и footer.php

Файлы header.php и footer.php содержат код, который повторяется на всех страницах — например, шапку сайта и футер.

Пример header.php:

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title><?php wp_title('|', true, 'right'); ?><?php bloginfo('name'); ?></title>
  <?php wp_head(); ?>
</head>
<body>
<header>
  <h1><a href="<?php echo home_url(); ?>"><?php bloginfo('name'); ?></a></h1>
  <nav>
    <?php wp_nav_menu(array('theme_location' => 'primary')); ?>
  </nav>
</header>

И footer.php:

<footer>
  <p>© <?php echo date('Y'); ?> <?php bloginfo('name'); ?></p>
</footer>
<?php wp_footer(); ?>
</body>
</html>

Регистрация меню и поддержка функций темы

Чтобы меню, которое мы выводим в header.php, работало, его нужно зарегистрировать в functions.php:

function wptemplates_theme_setup() {
    register_nav_menus(array(
        'primary' => __('Основное меню', 'wptemplates-theme')
    ));
    add_theme_support('title-tag');
    add_theme_support('post-thumbnails');
}
add_action('after_setup_theme', 'wptemplates_theme_setup');

Эти функции регистрируют место для меню, позволяют WordPress управлять заголовком страницы и включают поддержку миниатюр постов.

Создаем шаблон для одной записи single.php

Чтобы вывести отдельную запись с кастомным оформлением, создадим файл single.php:

<?php get_header(); ?>

<main>
  <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <article>
      <h1><?php the_title(); ?></h1>
      <div class="post-meta">
        <span>Опубликовано: <?php the_date(); ?></span>
        <span>Автор: <?php the_author(); ?></span>
      </div>
      <div><?php the_content(); ?></div>
    </article>
  <?php endwhile; else : ?>
    <p>Запись не найдена.</p>
  <?php endif; ?>
</main>

<?php get_footer(); ?>

Работа с виджетами и сайдбаром

Для добавления области виджетов нужно зарегистрировать сайдбар в functions.php:

function wptemplates_widgets_init() {
    register_sidebar(array(
        'name' => __('Основной сайдбар', 'wptemplates-theme'),
        'id' => 'sidebar-1',
        'before_widget' => '<div class="widget">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>'
    ));
}
add_action('widgets_init', 'wptemplates_widgets_init');

И вывести сайдбар в нужном месте, например, в sidebar.php:

<aside id="secondary" class="widget-area" role="complementary">
  <?php dynamic_sidebar('sidebar-1'); ?>
</aside>

Полезные плагины для разработки и отладки тем

При создании и отладке тем рекомендуем использовать следующие плагины:

  • Query Monitor — показывает запросы к базе, ошибки PHP, хуки и многое другое.
  • Theme Check — проверяет тему на соответствие стандартам WordPress.
  • Debug Bar — добавляет панель отладки в админку.

Эти инструменты сильно облегчают разработку и помогают выявлять ошибки на ранних этапах.

Выводы и рекомендации

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

Начинайте с базовой структуры, постепенно добавляя функциональность, проверяйте работу на разных типах страниц и не забывайте про адаптивность и производительность.

Как изменить вывод публикаций в WordPress без изменения шаблона
04.03.2026
Как создать адаптивные шаблоны WordPress с использованием атрибута srcset
30.03.2026
WooCommerce: как отключить автоматический пересчет стоимости товаров в корзине
01.06.2026
Как создать динамическую навигацию в WordPress: примеры и пошаговое руководство
21.11.2025
Как создать собственный плагин для WordPress с примерами кода
02.12.2025