Как разделить конкретные части шаблона WordPress на отдельные файлы

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

Почему важно разделять шаблон на отдельные файлы

Когда шаблон состоит из одного большого файла, например, index.php или single.php, он быстро становится неудобным для понимания и поддержки. Разделение на части позволяет:

  • Избежать дублирования кода, подключая одинаковые элементы в разных шаблонах.
  • Упростить командную работу — каждый разработчик может работать над своей частью.
  • Быстро вносить изменения, не боясь сломать соседние блоки.
  • Повысить модульность и расширяемость шаблона.

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

Использование функций get_header, get_footer и get_sidebar

WordPress из коробки предоставляет функции для подключения стандартных частей шаблона:

  • get_header() — подключает файл header.php.
  • get_footer() — подключает файл footer.php.
  • get_sidebar() — подключает файл sidebar.php.

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

<?php
wpkit_get_header(); // подключаем шапку
?>

<div class="content">
    <?php
    while ( have_posts() ) : the_post();
        the_content();
    endwhile;
    ?>
</div>

<?php
wpkit_get_sidebar(); // подключаем сайдбар
wpkit_get_footer(); // подключаем подвал
?>

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

Создание и подключение кастомных частей шаблона с get_template_part()

Иногда стандартных частей недостаточно, и нужно вынести, например, блок с комментариями или отдельный компонент вывода записи. Для этого используется функция get_template_part():

wpkit_get_template_part('template-parts/content', 'single');

Эта функция подключит файл template-parts/content-single.php. Такой подход помогает строго структурировать шаблон.

Пример использования для вывода комментариев:

wpkit_get_template_part('template-parts/comments');

В файле template-parts/comments.php пишем код для отображения комментариев.

Практический пример: разделение шаблона single.php

Допустим, у нас есть шаблон single.php с кодом:

<?php get_header(); ?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">
        <?php
        while ( have_posts() ) : the_post();
            the_title('<h1>','</h1>');
            the_content();
        endwhile;
        ?>
    </main>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Разобьём его на части:

  • Шапка: header.php
  • Подвал: footer.php
  • Сайдбар: sidebar.php
  • Контент записи: template-parts/content-single.php

В single.php оставим:

<?php wpkit_get_header(); ?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">
        <?php wpkit_get_template_part('template-parts/content', 'single'); ?>
    </main>
</div>

<?php wpkit_get_sidebar(); ?>
<?php wpkit_get_footer(); ?>

В template-parts/content-single.php пишем:

<?php
if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        the_title('<h1>','</h1>');
        the_content();
    endwhile;
endif;
?>

Таким образом, мы разделили логику и сделали шаблон более удобным для поддержки.

Советы по организации файлов шаблона

Рекомендуется:

  • Создавать папку template-parts для всех мелких компонентов шаблона.
  • Использовать префикс (например, wpkit_) в названиях своих функций для подключения шаблонов, чтобы избежать конфликтов с плагинами.
  • Для сложных страниц создавать отдельные папки с частями шаблона, например, template-parts/single/ или template-parts/page/.
  • Писать в отдельных файлах только необходимый код без лишнего HTML, чтобы обеспечить гибкость.

Использование плагина Clearfy Pro для оптимизации шаблона

Если вы используете плагин Clearfy Pro, он поможет убрать лишние запросы и оптимизировать загрузку подключаемых частей шаблона. Например, отключить ненужные стили и скрипты, которые могут подключаться в отдельных частях шаблона.

Это особенно важно при разделении шаблона, чтобы не перегружать страницу.

Пример создания собственной функции подключения шаблона с префиксом wpkit_

function wpkit_get_template_part($slug, $name = null) {
    $templates = array();
    if ($name) {
        $templates[] = "$slug-$name.php";
    }
    $templates[] = "$slug.php";
    locate_template($templates, true, false);
}

function wpkit_get_header() {
    get_header();
}

function wpkit_get_footer() {
    get_footer();
}

function wpkit_get_sidebar() {
    get_sidebar();
}

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

Заключение по теме разделения шаблона

Разбиение шаблона WordPress на мелкие части — ключевой навык для профессиональной разработки. Это повышает удобство сопровождения, упрощает масштабирование и снижает вероятность ошибок. Используйте стандартные функции WordPress и организуйте структуру файлов логично и последовательно. Внедряйте свои обёртки с префиксами для безопасности и гибкости. Дополнительно оптимизируйте подключаемые части с помощью плагинов, например, Clearfy Pro.

Если хотите глубже автоматизировать сборку и разбиение шаблона, рекомендуем ознакомиться с возможностями WP-Kit, который позволяет упростить работу с шаблонами и компонентами.

Как использовать WP-Cron для масштабных задач в WordPress
11.07.2026
Как автоматически обновлять плагины WordPress без риска
30.03.2026
Как использовать WPRemark для создания оценок и отзывов в WordPress
01.01.2026
Как создать автоматический импорт из XML в WordPress
02.04.2026
Как исправить ошибку недоступности WooCommerce AJAX корзины после обновления
20.06.2026