Динамические колонтитулы (header и footer) позволяют выводить на страницах сайта актуальную информацию, основанную на содержимом страницы, дате, авторе или других параметрах. В теме GeneratePress, благодаря гибкости и чистому коду, это можно сделать без лишних плагинов, используя хуки и небольшие фрагменты PHP. В этой статье разберём, как создать динамические колонтитулы для разных типов страниц с примерами кода и рекомендациями по оптимизации.
Почему динамические колонтитулы важны для сайта на GeneratePress
Статичные заголовки и футеры часто не отражают контекст страницы, что снижает удобство пользователя и SEO-эффективность. Например, полезно показывать разные призывы к действию или контактную информацию в зависимости от раздела сайта. GeneratePress имеет систему хуков и фильтров, которые позволяют внедрять динамический контент без изменения файлов темы, сохраняя совместимость с обновлениями.
Динамические колонтитулы повышают:
- Юзабилити — пользователь видит релевантную информацию;
- Скорость работы — загружаются только нужные элементы;
- SEO — можно добавлять уникальные элементы для каждой страницы;
- Лёгкость поддержки — изменения централизованы и не требуют постоянных правок.
Использование хуков GeneratePress для динамических колонтитулов
GeneratePress предоставляет хуки generate_before_header, generate_after_header, generate_before_footer, generate_after_footer, куда можно добавлять свой код. Для динамического вывода контента используем условные теги WordPress.
Пример добавления динамического заголовка в шапку:
function generatepress_ru_dynamic_header() {
if ( is_home() ) {
echo '<div class="dynamic-header">Добро пожаловать на главную страницу!</div>';
} elseif ( is_singular('post') ) {
echo '<div class="dynamic-header">Читаем статью: ' . get_the_title() . '</div>';
} elseif ( is_page() ) {
echo '<div class="dynamic-header">Страница: ' . get_the_title() . '</div>';
} else {
echo '<div class="dynamic-header">Добро пожаловать на сайт!</div>';
}
}
add_action( 'generate_before_header', 'generatepress_ru_dynamic_header' );
Этот код добавляет в начало шапки блок с разным текстом для главной, записи, страницы и остальных случаев.
Динамические колонтитулы в футере с примером вывода контактов и даты
Для футера актуально показывать дату обновления сайта, контакты или специальные предложения.
function generatepress_ru_dynamic_footer() {
$year = date('Y');
if ( is_singular('post') ) {
$author = get_the_author();
echo '<div class="dynamic-footer">Автор: ' . esc_html($author) . ' | © ' . $year . '</div>';
} elseif ( is_front_page() ) {
echo '<div class="dynamic-footer">Свяжитесь с нами: <a href="mailto:info@example.com">info@example.com</a> | © ' . $year . '</div>';
} else {
echo '<div class="dynamic-footer">Все права защищены © ' . $year . '</div>';
}
}
add_action( 'generate_after_footer', 'generatepress_ru_dynamic_footer' );
Такой подход позволяет подстраивать футер под нужды посетителей, не создавая громоздких шаблонов.
Расширение динамических колонтитулов с помощью плагинов
Для тех, кто предпочитает готовые решения или нуждается в расширенной логике, можно использовать плагины с поддержкой GeneratePress:
- Clearfy Pro — оптимизация и управление хуками, добавление условий для вывода;
- Тема Reboot — можно использовать вместе с GeneratePress для расширения возможностей колонтитулов;
- WPRemark — управление комментариями и динамическими блоками внизу страниц.
Эти инструменты помогут упростить создание и управление динамическим контентом без глубокого погружения в код.
Советы по оптимизации и безопасности динамических колонтитулов
При добавлении кода в колонтитулы важно соблюдать несколько правил:
- Используйте функции экранирования, например
esc_html(), чтобы избежать XSS-уязвимостей; - Кешируйте результаты, если данные собираются с запросов к базе или внешних источников, чтобы не нагружать сервер;
- Проверяйте, что добавляемые хуки не конфликтуют с другими плагинами и темами;
- Используйте дочернюю тему или плагин для пользовательских функций, чтобы изменения не пропали при обновлении GeneratePress;
- Тестируйте на разных типах страниц и устройствах, чтобы убедиться в корректном отображении.
Пример функции с кешированием динамического контента
function generatepress_ru_dynamic_header_cached() {
$cache_key = 'generatepress_ru_dynamic_header';
$output = get_transient( $cache_key );
if ( false === $output ) {
ob_start();
if ( is_home() ) {
echo '<div class="dynamic-header">Добро пожаловать на главную страницу!</div>';
} else {
echo '<div class="dynamic-header">Добро пожаловать на сайт!</div>';
}
$output = ob_get_clean();
set_transient( $cache_key, $output, HOUR_IN_SECONDS );
}
echo $output;
}
add_action( 'generate_before_header', 'generatepress_ru_dynamic_header_cached' );
Такой способ уменьшает нагрузку, особенно на крупных сайтах с большим трафиком.
Выводы и рекомендации для внедрения динамических колонтитулов в GeneratePress
Динамические колонтитулы — мощный инструмент для улучшения пользовательского опыта и SEO. GeneratePress с его хуками и простотой кастомизации позволяет реализовать их быстро и эффективно. Начинайте с простых условий, постепенно добавляя сложную логику и интеграцию с плагинами. Не забывайте о безопасности и производительности, используя экранирование и кеширование. В итоге вы получите гибкий и современный сайт, который легко поддерживать.