Как создать автоматические шаблоны для постов в WordPress с кастомным выводом

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

Почему нужны автоматические шаблоны для постов

Стандартная тема WordPress использует единый шаблон single.php для всех записей. Но часто бизнес-требования требуют, чтобы посты разных категорий, типов или с определёнными метками отображались по-разному. Например, для новостей нужен один стиль, для обзоров — другой, а для обучающих материалов — третий.

Создавать отдельные файлы шаблонов single-category.php или single-posttype.php можно, но это усложняет поддержку и масштабирование темы. Поэтому логично делать шаблон динамическим, меняя разметку и функционал в зависимости от условий.

Создание автоматического шаблона через фильтр template_include

Один из самых гибких способов — перехватить выбор шаблона через фильтр template_include и подставить нужный файл или сгенерировать вывод программно.

add_filter('template_include', 'wptemplates_filter_single_template');

function wptemplates_filter_single_template($template) {
    if (is_single()) {
        $post = get_queried_object();

        if (has_category('news', $post)) {
            $new_template = locate_template(array('single-news.php'));
            if ($new_template) {
                return $new_template;
            }
        }

        if (get_post_meta($post->ID, 'special_template', true) === 'yes') {
            $new_template = locate_template(array('single-special.php'));
            if ($new_template) {
                return $new_template;
            }
        }
    }
    return $template;
}

В данном примере мы проверяем, если у поста категория 'news', подгружаем шаблон single-news.php, если метаполе 'special_template' содержит 'yes' — подгружаем single-special.php. Если шаблоны не найдены — возвращаем стандартный.

Создание кастомных шаблонов по типам записей и меткам

Для кастомных типов записей (CPT) можно также использовать аналогичный подход. Например, для CPT «portfolio» создадим шаблон single-portfolio.php, WordPress подгрузит его автоматически. Но если нужно более гибко, фильтр template_include поможет подставить любые файлы.

Использование плагинов для шаблонов: WP Page Template и Custom Post Type UI

Если хочется упростить процесс без кодинга, рекомендуем плагин WP Page Template — он позволяет создавать и назначать шаблоны для постов и страниц через админку, включая кастомные типы.

Для удобного управления типами записей используйте Custom Post Type UI. Вместе они позволяют быстро организовать структуру сайта с автоматическим выводом по шаблонам.

Динамический вывод контента в шаблонах с помощью get_post_meta и have_rows (ACF)

Для глубокой кастомизации шаблонов часто используют пользовательские поля. Плагин Advanced Custom Fields (ACF) позволяет создавать сложные структуры данных и выводить их в шаблоне.

Например, чтобы вывести галерею изображений из поля ACF 'gallery', используйте следующий код в вашем шаблоне:

if (function_exists('get_field')) {
    $images = get_field('gallery');
    if ($images) {
        echo '<div class="gallery">';
        foreach ($images as $image) {
            echo '<img src="' . esc_url($image['url']) . '" alt="' . esc_attr($image['alt']) . '" />';
        }
        echo '</div>';
    }
}

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

Пример создания динамического шаблона для категории "Обзоры" с кастомным выводом

Допустим, у вас есть категория «Обзоры» и вы хотите, чтобы у постов этой категории был уникальный вывод: заголовок, оценка (плагин Expert Review), видеообзор и список характеристик.

Создайте файл single-review.php и подключите его через фильтр:

add_filter('template_include', 'wptemplates_single_review_template');
function wptemplates_single_review_template($template) {
    if (is_single() && has_category('obzory')) {
        $new_template = locate_template('single-review.php');
        if ($new_template) {
            return $new_template;
        }
    }
    return $template;
}

В файле single-review.php используйте код для вывода оценки из плагина Expert Review:

if (function_exists('expert_review_get_score')) {
    $score = expert_review_get_score(get_the_ID());
    echo '<div class="review-score">Оценка: ' . esc_html($score) . '</div>';
}

Добавьте видеообзор, используя поле ACF с типом видео:

$video_url = get_field('video_review');
if ($video_url) {
    echo wp_oembed_get($video_url);
}

И список характеристик из повторяющихся полей:

if (have_rows('characteristics')) {
    echo '<ul class="characteristics-list">';
    while (have_rows('characteristics')) {
        the_row();
        $name = get_sub_field('name');
        $value = get_sub_field('value');
        echo '<li>' . esc_html($name) . ': ' . esc_html($value) . '</li>';
    }
    echo '</ul>';
}

Рекомендации по организации шаблонов и производительности

Чтобы шаблоны оставались удобными в поддержке, придерживайтесь следующих правил:

  • Используйте дочерние темы для кастомизации, чтобы не потерять изменения при обновлении.
  • Разбивайте шаблоны на части через get_template_part() для повторного использования.
  • Кешируйте сложные запросы и данные ACF, чтобы снизить нагрузку.
  • Используйте плагины, такие как Clearfy Pro, для оптимизации и контроля загрузки скриптов и стилей.

Выводы и полезные ссылки

Автоматические шаблоны позволяют гибко управлять выводом контента, экономя время и упрощая поддержку сайта. Используйте фильтр template_include для выбора нужного шаблона, ACF и плагин Expert Review для расширенного контента, а также WP Page Template для удобного создания шаблонов через интерфейс.

Полезные ссылки:

Как добавить автоматическое сохранение в редактор Gutenberg WordPress
23.02.2026
WooCommerce: как изменить стоимость товаров в корзине без пересчета
02.05.2026
WooCommerce: как использовать хуки для кастомизации корзины
04.06.2026
Как отключить редактор Gutenberg в WordPress 5.9: практические способы и примеры
08.03.2026
Как использовать AJAX в WordPress для обновления шаблонов без перезагрузки страницы
13.02.2026