Часто при разработке или кастомизации WordPress темы возникает задача использовать внешние шаблоны, не входящие в стандартный набор файлов темы. Это позволяет гибко расширять функциональность, переиспользовать код и упрощать поддержку сайта. В этой статье мы подробно разберём, как подключать и использовать внешние шаблоны в настройках темы WordPress.
Почему стоит использовать внешние шаблоны в теме WordPress
Использование внешних шаблонов даёт несколько преимуществ:
- Модульность кода. Вынос шаблонов в отдельные файлы или папки помогает лучше организовать структуру темы и облегчить поддержку.
- Возможность переиспользования. Один и тот же шаблон можно использовать в разных частях сайта без дублирования кода.
- Удобство для кастомизации. При обновлении темы внешние шаблоны можно не затрагивать, сохраняя изменения.
- Интеграция с плагинами. Некоторые плагины позволяют подключать шаблоны из пользовательских папок, что расширяет возможности дизайна.
Основные подходы к подключению внешних шаблонов
В WordPress существуют несколько способов подключить внешние шаблоны:
- Использование функции
get_template_part()с указанием пути к шаблону. - Подключение через
locate_template()с последующим подключением файла. - Использование хуков и фильтров для замены стандартных шаблонов на внешние.
Рассмотрим каждый способ подробнее с примерами.
Использование get_template_part() для подключения внешних шаблонов
Функция get_template_part() стандартно используется для подключения частей шаблонов из папки темы. С версии WordPress 5.5 она поддерживает передачу относительных путей, что позволяет подключать шаблоны из вложенных папок.
Пример подключения шаблона из папки template-parts/custom:
<?php get_template_part('template-parts/custom/content', 'special'); ?>Это подключит файл template-parts/custom/content-special.php из папки темы.
Для подключения шаблонов, которые находятся вне папки темы, стандартная функция не подходит, тогда используется locate_template().
Подключение шаблонов вне папки темы через locate_template()
Функция locate_template() ищет шаблон по указанным путям и возвращает путь к файлу, если он найден.
Пример подключения внешнего шаблона из папки /wp-content/external-templates/:
function wpcorp_get_external_template($template_name) {
$external_path = WP_CONTENT_DIR . '/external-templates/' . $template_name . '.php';
if (file_exists($external_path)) {
include $external_path;
return true;
}
return false;
}
// Используем функцию
if (!wpcorp_get_external_template('custom-header')) {
// fallback на стандартный шаблон
get_header();
}Такой подход позволяет гибко подключать шаблоны из любой директории сервера.
Пример динамического выбора шаблона по условию
Можно создать функцию, которая в зависимости от условий (страница, пользователь, язык) подгружает нужный внешний шаблон:
function wpcorp_load_template_by_condition() {
if (is_page('about')) {
wpcorp_get_external_template('about-custom');
} else {
get_template_part('template-parts/content', 'default');
}
}
// В файле page.php
wpcorp_load_template_by_condition();Использование хуков для замены стандартных шаблонов на внешние
WordPress позволяет через фильтр template_include подменить путь к шаблону, который будет использован для загрузки страницы.
Пример:
add_filter('template_include', 'wpcorp_custom_template_include');
function wpcorp_custom_template_include($template) {
if (is_single() && get_post_type() === 'post') {
$external_template = WP_CONTENT_DIR . '/external-templates/single-post-custom.php';
if (file_exists($external_template)) {
return $external_template;
}
}
return $template;
}Этот код заставит WordPress использовать внешний шаблон для одиночных записей типа post, если файл существует.
Практические советы и плагины для работы с внешними шаблонами
Для упрощения работы с шаблонами рекомендую обратить внимание на следующие плагины:
- Clearfy Pro — помогает оптимизировать структуру темы и управлять выводом шаблонов.
- Expert Review — позволяет создавать кастомные шаблоны для обзоров и интегрировать их в тему.
Также стоит придерживаться следующих рекомендаций:
- Храните внешние шаблоны в отдельной папке с понятной структурой.
- Используйте префиксы для функций и файлов, чтобы избежать конфликтов.
- При необходимости подключайте стили и скрипты для внешних шаблонов через
wpcorp_enqueue_scripts, чтобы не перегружать основной шаблон.
Подключение стилей и скриптов для внешних шаблонов
Если внешний шаблон требует собственных CSS или JS, их нужно подключать правильно, чтобы не нарушить работу темы.
Пример подключения стилей для внешнего шаблона:
function wpcorp_enqueue_external_template_assets() {
if (is_page_template('external-templates/custom-template.php')) {
wp_enqueue_style('wpcorp-external-style', get_stylesheet_directory_uri() . '/external-templates/css/style.css', [], null);
wp_enqueue_script('wpcorp-external-script', get_stylesheet_directory_uri() . '/external-templates/js/script.js', ['jquery'], null, true);
}
}
add_action('wp_enqueue_scripts', 'wpcorp_enqueue_external_template_assets');Если внешний шаблон загружается вне папки темы, пути указывайте вручную, например, через plugins_url() или content_url().
Обработка ошибок и безопасность при работе с внешними шаблонами
При подключении внешних шаблонов важно:
- Проверять существование файла перед подключением, чтобы избежать ошибок.
- Ограничить доступ к папке с внешними шаблонами через .htaccess или правила сервера, чтобы избежать нежелательного доступа.
- Не подключать шаблоны из внешних непроверенных источников.
Это снизит риски и сохранит стабильность сайта.
Итог
Использование внешних шаблонов в WordPress теме — мощный инструмент для расширения и кастомизации сайта. Правильное подключение через get_template_part(), locate_template() и фильтр template_include позволяет гибко управлять выводом страниц. Важно соблюдать структуру, подключать стили и скрипты аккуратно и следить за безопасностью. Для удобства можно использовать плагины, например, Clearfy Pro или Expert Review.