Как удалить все виджеты на странице WordPress: практические решения и примеры кода

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

Почему может понадобиться удалить виджеты на странице WordPress

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

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

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

Способ 1: Отключение сайдбаров с виджетами через условные теги и хуки

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

Допустим, в теме сайдбар подключается через вызов get_sidebar() или dynamic_sidebar(). Чтобы отключить вывод, нужно в файле functions.php добавить условие и фильтр.

function wpinfo_disable_sidebar_on_page() {
    if (is_page('landing')) { // замените 'landing' на нужный slug или ID страницы
        unregister_sidebar('sidebar-1'); // ID вашего сайдбара
    }
}
add_action('widgets_init', 'wpinfo_disable_sidebar_on_page', 11);

Однако unregister_sidebar не всегда работает для динамических сайдбаров. В таком случае лучше отфильтровать вывод сайдбара через хуки темы, либо в шаблоне страницы создать отдельный шаблон без вызова сайдбара.

Пример: создание шаблона страницы без сайдбара

Создайте новый файл page-no-sidebar.php в папке темы с минимальным кодом, исключающим вызов сайдбаров:

<?php
/*
Template Name: Без сайдбара
*/
get_header();
?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">
        <?php
        while ( have_posts() ) : the_post();
            the_content();
        endwhile;
        ?>
    </main>
</div>

<?php get_footer(); ?>

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

Способ 2: Отключение виджетов программно через фильтр

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

Пример функции, которая очищает все виджеты на определённой странице:

function wpinfo_remove_all_widgets_on_page( $sidebars_widgets ) {
    if (is_page('landing')) { // замените на нужный slug или ID
        foreach ($sidebars_widgets as $sidebar_id => $widgets) {
            if ($sidebar_id !== 'wp_inactive_widgets') {
                $sidebars_widgets[$sidebar_id] = array();
            }
        }
    }
    return $sidebars_widgets;
}
add_filter('sidebars_widgets', 'wpinfo_remove_all_widgets_on_page');

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

Настройка по ID страницы или другим условиям

Функцию удобно расширить с помощью других условных тегов, например, is_single(), is_category() и т.п., для гибкого управления выводом виджетов.

Способ 3: Использование плагинов для управления виджетами по страницам

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

  • Widget Options — позволяет устанавливать условия отображения виджетов по страницам, категориям, ролям пользователей и другим параметрам.
  • Display Widgets — простой плагин для включения/отключения виджетов на конкретных страницах.
  • Content Aware Sidebars — создаёт динамические сайдбары и позволяет настраивать их видимость.

Эти плагины помогут избежать ручного кода и быстро управлять виджетами через админку.

Дополнительные советы по работе с виджетами и сайдбарами

При работе с виджетами важно помнить, что не все темы используют стандартные сайдбары. Часто разработчики создают кастомные области виджетов. Чтобы узнать точные ID сайдбаров, можно вызвать функцию:

print_r( wp_get_sidebars_widgets() );

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

Если вы используете тему из каталога Root или Reboot, обратите внимание, что они могут иметь собственные хуки для управления сайдбарами, которые можно использовать для тонкой настройки.

Пример удаления виджетов только из определённого сайдбара

function wpinfo_remove_widgets_from_sidebar( $sidebars_widgets ) {
    if (is_page(42)) { // ID страницы
        $sidebar_id = 'sidebar-1';
        if (isset($sidebars_widgets[$sidebar_id])) {
            $sidebars_widgets[$sidebar_id] = array();
        }
    }
    return $sidebars_widgets;
}
add_filter('sidebars_widgets', 'wpinfo_remove_widgets_from_sidebar');

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

Итоговые рекомендации

Для удаления всех виджетов с определённой страницы лучше всего использовать фильтр sidebars_widgets с условной проверкой. Это универсальный и безопасный способ, который не требует изменения темы и позволяет при необходимости быстро вернуть виджеты обратно.

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

Ниже приведён полный пример функции для удаления всех виджетов на странице с slug "landing":

function wpinfo_remove_all_widgets_on_landing_page( $sidebars_widgets ) {
    if (is_page('landing')) {
        foreach ($sidebars_widgets as $sidebar_id => $widgets) {
            if ($sidebar_id !== 'wp_inactive_widgets') {
                $sidebars_widgets[$sidebar_id] = array();
            }
        }
    }
    return $sidebars_widgets;
}
add_filter('sidebars_widgets', 'wpinfo_remove_all_widgets_on_landing_page');

Этот подход гарантирует, что на странице "landing" не будет отображаться ни один виджет, при этом в админке они останутся в настройках.

Автоматическая оптимизация базы данных WordPress: практические решения и примеры кода
10.02.2026
Как добавить автоматические уведомления о обновлениях тем и плагинов в WordPress
17.04.2026
Как изменить имя пользователя в WordPress без доступа к базе данных
26.03.2026
Как создать собственный шорткод в WordPress
02.11.2025
Как добавить автопостинг в WordPress с помощью WPRemark
18.03.2026