Как сделать автоматический скрытый sidebar в теме WordPress

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

Почему стоит использовать скрытый sidebar в теме WordPress

Скрытый sidebar — это панель с дополнительным контентом, которая по умолчанию спрятана и открывается только при необходимости. Такой подход имеет несколько преимуществ:

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

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

Создание скрытого sidebar вручную: подключение и регистрация

Первым шагом нужно зарегистрировать sidebar в вашей теме. В functions.php добавим функцию wp_theme_register_sidebar, которая зарегистрирует область виджетов:

<?php
function wp_theme_register_sidebar() {
    register_sidebar(array(
        'name'          => 'Скрытый сайдбар',
        'id'            => 'hidden-sidebar',
        'description'   => 'Автоматически скрываемая панель',
        'before_widget' => '<div class="widget %2$s">',
        'after_widget'  => '</div>',
        'before_title'  => '<h3 class="widget-title">',
        'after_title'   => '</h3>'
    ));
}
add_action('widgets_init', 'wp_theme_register_sidebar');
?>

Эта функция зарегистрирует новый sidebar с ID hidden-sidebar, который мы будем использовать для размещения виджетов.

Добавление разметки и кнопки вызова sidebar

В вашем файле шаблона (например, header.php или sidebar.php) добавьте HTML-разметку для скрытого sidebar и кнопки для его открытия и закрытия:

<button id="toggle-sidebar" aria-expanded="false" aria-controls="hidden-sidebar">Меню</button>

<aside id="hidden-sidebar" class="hidden-sidebar" aria-hidden="true">
    <button id="close-sidebar">Закрыть</button>
    <?php if (is_active_sidebar('hidden-sidebar')) : ?>
        <?php dynamic_sidebar('hidden-sidebar'); ?>
    <?php endif; ?>
</aside>

Здесь мы добавили кнопку с ID toggle-sidebar, которая открывает скрытый sidebar, и кнопку закрытия внутри самого сайдбара.

Стилизация и анимация скрытого sidebar

Для корректного скрытия и отображения сайдбара используем CSS. Добавьте в style.css вашей темы следующий код:

.hidden-sidebar {
    position: fixed;
    top: 0;
    right: -300px; /* Скрываем за правым краем */
    width: 300px;
    height: 100%;
    background: #fff;
    box-shadow: -2px 0 5px rgba(0,0,0,0.3);
    transition: right 0.3s ease;
    z-index: 9999;
    overflow-y: auto;
}

.hidden-sidebar.active {
    right: 0; /* Показываем */
}

#toggle-sidebar {
    position: fixed;
    top: 15px;
    right: 15px;
    z-index: 10000;
    background: #0073aa;
    color: #fff;
    border: none;
    padding: 10px 15px;
    cursor: pointer;
}

#close-sidebar {
    display: block;
    margin: 10px auto;
    background: #d54e21;
    color: #fff;
    border: none;
    padding: 5px 10px;
    cursor: pointer;
}

Так мы получим плавное появление и скрытие панели с правой стороны экрана.

JavaScript для управления открытием и закрытием sidebar

Добавьте следующий скрипт в footer.php перед закрывающим тегом </body> или подключите отдельный JS-файл:

<script>
document.addEventListener('DOMContentLoaded', function() {
    var toggleBtn = document.getElementById('toggle-sidebar');
    var closeBtn = document.getElementById('close-sidebar');
    var sidebar = document.getElementById('hidden-sidebar');

    toggleBtn.addEventListener('click', function() {
        var isActive = sidebar.classList.toggle('active');
        sidebar.setAttribute('aria-hidden', !isActive);
        toggleBtn.setAttribute('aria-expanded', isActive);
    });

    closeBtn.addEventListener('click', function() {
        sidebar.classList.remove('active');
        sidebar.setAttribute('aria-hidden', 'true');
        toggleBtn.setAttribute('aria-expanded', 'false');
    });

    // Закрыть sidebar при клике вне его
    document.addEventListener('click', function(e) {
        if (!sidebar.contains(e.target) && !toggleBtn.contains(e.target)) {
            sidebar.classList.remove('active');
            sidebar.setAttribute('aria-hidden', 'true');
            toggleBtn.setAttribute('aria-expanded', 'false');
        }
    });
});
</script>

Этот JS код отвечает за переключение класса active у sidebar, управление атрибутами доступности и закрытие панели при клике вне её.

Использование плагинов для расширенной функциональности скрытого sidebar

Если вы не хотите писать код вручную или хотите добавить дополнительные возможности, обратите внимание на плагины:

  • Slide Anything — позволяет создавать слайдеры и выдвижные панели, можно использовать для сайдбара.
  • Widget Options — расширяет возможности управления виджетами, включая показ по условиям.
  • Clearfy Pro — комплексный плагин оптимизации, включает улучшения для управления сайдбарами и виджетами.

В большинстве случаев, комбинирование собственного кода с легкими плагинами даёт гибкую и производительную реализацию.

Как интегрировать скрытый sidebar в тему WPTheme

Если вы используете тему из каталога WPSHOP, например Reboot или Root, то структура шаблонов уже предусматривает подключение sidebar. Достаточно добавить регистрацию sidebar и шаблон в нужный файл, а стили и скрипты подключить в functions.php через wp_enqueue_scripts. Например:

function wp_theme_enqueue_sidebar_scripts() {
    wp_enqueue_style('wp-theme-sidebar-style', get_template_directory_uri() . '/css/sidebar.css');
    wp_enqueue_script('wp-theme-sidebar-script', get_template_directory_uri() . '/js/sidebar.js', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'wp_theme_enqueue_sidebar_scripts');

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

Советы по улучшению производительности и UX скрытого sidebar

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

  • Загружайте виджеты сайдбара асинхронно, если они содержат динамический контент.
  • Минимизируйте стили и скрипты, используемые для сайдбара.
  • Добавьте поддержку клавиатурной навигации для доступности.
  • Проверяйте корректность отображения на мобильных устройствах и разных браузерах.
  • Используйте локализацию для кнопок и сообщений, чтобы адаптировать под разные языки.

По итогу вы получите современный, удобный и гибкий скрытый sidebar, который улучшит взаимодействие пользователей с вашим сайтом.

Как реализовать динамическую пагинацию в WordPress теме
08.01.2026
Как оптимизировать темы WordPress для быстрой загрузки
20.11.2025
Как создать динамические фильтры в теме WordPress для кастомных типов записей
13.12.2025
Как сделать автоматическое обновление темы WordPress без плагина
17.02.2026
Как добавить собственный тип записей в WordPress
13.11.2025