В некоторых случаях при разработке темы WordPress возникает задача полностью убрать сайдбар или конкретный виджет из темы, чтобы изменить структуру страницы или упростить дизайн. Часто пользователи устанавливают плагины для этого, но можно обойтись и без них, используя функции темы и минимальный код. В этой статье подробно разберем, как удалить область сайдбара (widget area) и отдельные виджеты программно, чтобы избежать лишних плагинов и сохранить максимальную производительность.
Что такое область виджетов (sidebar) в WordPress
WordPress позволяет зарегистрировать области для виджетов — сайдбары, футеры, колонки и т.п. Это делается через функцию register_sidebar(), после чего в шаблонах темы вызывается вывод этой области через dynamic_sidebar(). Если мы хотим убрать сайдбар, нужно убрать регистрацию области, а также удалить вызов вывода в шаблонах.
Важно понимать, что в большинстве тем сайдбар — это не просто набор виджетов, а часть HTML-разметки страницы, поэтому удаление только виджетов не уберет пустое пространство, если его не убрать из шаблонов.
Удаление области виджетов (sidebar) из темы
Для удаления сайдбара нужно сделать два шага:
- Отменить регистрацию сайдбара;
- Удалить вызов
dynamic_sidebar()из шаблонов.
Отменить регистрацию можно, переопределив функцию, которая регистрирует сайдбары. Обычно это делается в файле functions.php темы. Если вы используете дочернюю тему, можно просто удалить регистрацию через хук.
Пример отмены регистрации сайдбара
add_action('widgets_init', 'wp_themes_unregister_sidebar', 11);
function wp_themes_unregister_sidebar() {
unregister_sidebar('sidebar-1');
}
Здесь sidebar-1 — ID сайдбара, который вы хотите удалить. Его можно узнать из функции register_sidebar() в исходной теме.
Удаление вызова сайдбара из шаблона
В шаблонах темы (например, sidebar.php или page.php) ищите вызов:
<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
<?php dynamic_sidebar( 'sidebar-1' ); ?>
<?php endif; ?>
Чтобы убрать сайдбар, просто удалите этот блок или закомментируйте его. Также нужно проверить файлы index.php, single.php и другие, где сайдбар может быть подключен.
Удаление конкретного виджета из области виджетов
Если вы хотите не убирать весь сайдбар, а только один или несколько виджетов, можно использовать фильтр sidebars_widgets. Он позволяет контролировать, какие виджеты выводятся в каждой области.
Пример удаления одного виджета по ID
add_filter('sidebars_widgets', 'wp_themes_remove_widget_from_sidebar');
function wp_themes_remove_widget_from_sidebar( $sidebars_widgets ) {
if ( isset( $sidebars_widgets['sidebar-1'] ) ) {
// ID виджета, например 'text-3'
$widget_id_to_remove = 'text-3';
$sidebars_widgets['sidebar-1'] = array_filter(
$sidebars_widgets['sidebar-1'],
function( $widget_id ) use ( $widget_id_to_remove ) {
return $widget_id !== $widget_id_to_remove;
}
);
}
return $sidebars_widgets;
}
Этот код удалит виджет с ID text-3 из сайдбара sidebar-1. ID виджета можно узнать в админке в разделе Виджеты, наведя на заголовок виджета или посмотрев в HTML-код страницы.
Удаление нескольких виджетов
Чтобы убрать несколько виджетов, просто расширьте массив с ID виджетов на удаление:
add_filter('sidebars_widgets', 'wp_themes_remove_multiple_widgets');
function wp_themes_remove_multiple_widgets( $sidebars_widgets ) {
if ( isset( $sidebars_widgets['sidebar-1'] ) ) {
$widgets_to_remove = ['text-3', 'categories-2'];
$sidebars_widgets['sidebar-1'] = array_filter(
$sidebars_widgets['sidebar-1'],
function( $widget_id ) use ( $widgets_to_remove ) {
return !in_array( $widget_id, $widgets_to_remove );
}
);
}
return $sidebars_widgets;
}
Использование плагина Clearfy Pro для управления виджетами
Если вы хотите гибко управлять виджетами без ручного кода, плагин Clearfy Pro предлагает функционал для отключения виджетов, областей и оптимизации темы. Он позволяет быстро отключать ненужные сайдбары и виджеты, улучшая производительность.
Это удобное решение для тех, кто не хочет погружаться в код, но при этом хочет контролировать вывод элементов темы.
Советы по удалению сайдбара в популярных темах
В популярных темах, таких как Reboot или Root от WPShop, часто сайдбары регистрируются стандартно, но для удаления рекомендуется:
- Создать дочернюю тему, чтобы не потерять изменения при обновлениях.
- Переопределить шаблоны, где вызывается
get_sidebar()— заменить на пустой файл или удалить вызов. - Использовать фильтр
sidebars_widgetsдля удаления отдельных виджетов.
Такой подход сохранит структуру темы и обеспечит гибкость.
Подведение итогов: когда стоит удалять сайдбар и виджеты вручную
Удаление сайдбара вручную оправдано, если вы создаете кастомную тему или хотите избавиться от лишнего кода и нагрузки на сайт. Это особенно актуально для лендингов и одностраничных сайтов, где сайдбар мешает дизайну.
Удаление отдельных виджетов через фильтр sidebars_widgets удобно, если нужно оперативно убрать несколько элементов без влияния на структуру всей темы.
Используйте проверенные методы и не забудьте создавать бэкапы перед изменениями.