Функция wp_unregister_sidebar_widget()
позволяет удалять ранее зарегистрированные виджеты из боковой панели WordPress. Это полезно, когда нужно управлять виджетами и скрывать их в зависимости от условий на сайте.
wp_unregister_sidebar_widget( int|string $id );
Параметры
- $id (int|string, обязательный): ID виджета, который нужно удалить.
Описание
Эта функция позволяет удалить виджет и из административной панели WordPress. Если вызвать её в файле functions.php
, виджет будет удалён и больше не будет отображаться в боковой панели.
ID виджета можно узнать, посмотрев атрибут id
блока виджета в административной панели. Например, блок виджета с ID my_custom_widget
будет иметь атрибут id="widget-17_my_custom_widget"
.
Возвращаемое значение
- null: функция не возвращает значений.
Пример 1: Отмена виджета
Рассмотрим ситуацию, когда необходимо отменить определённый виджет на всех страницах типа is_category()
. Предположим, что мы зарегистрировали виджет с ID custom_widget
с помощью функции wp_register_sidebar_widget()
следующим образом:
function display_custom_widget() {
// Код для вывода виджета
echo '<div>Это мой пользовательский виджет!</div>';
}
wp_register_sidebar_widget(
'custom_widget', // ID виджета
'Мой пользовательский виджет', // Заголовок виджета
'display_custom_widget' // Функция обратного вызова
);
Затем мы добавили этот виджет в панель виджетов ‘main-sidebar’, где он будет отображаться вместе с другими виджетами. В файле sidebar.php
код для вывода боковой панели может выглядеть так:
<ul id="sidebar">
<?php dynamic_sidebar( 'main-sidebar' ); ?>
</ul>
Теперь, чтобы отключить виджет custom_widget
на всех страницах категорий, добавим следующий код перед выводом панели виджетов:
<?php
if ( is_category() ) {
wp_unregister_sidebar_widget( 'custom_widget' );
}
?>
<ul id="sidebar">
<?php dynamic_sidebar( 'main-sidebar' ); ?>
</ul>
Пример 2: Удаление нескольких виджетов
Если нужно удалить несколько виджетов сразу, можно использовать массив. Например, предположим, что у нас есть несколько виджетов, которые нужно убрать с определённых страниц:
function remove_specific_widgets() {
if ( is_page( 'contact' ) ) {
wp_unregister_sidebar_widget( 'custom_widget' );
wp_unregister_sidebar_widget( 'another_widget' );
}
}
add_action( 'widgets_init', 'remove_specific_widgets' );
В этом примере мы проверяем, находимся ли мы на странице «Контакты», и если да, то удаляем два виджета: custom_widget
и another_widget
.
Пример 3: Условное отключение виджетов
Можно сделать более гибкий подход и отключать виджеты на основе других условий. Например, если вы хотите отключить виджет на всех страницах, кроме главной:
function disable_widget_on_non_home() {
if ( ! is_home() ) {
wp_unregister_sidebar_widget( 'custom_widget' );
}
}
add_action( 'widgets_init', 'disable_widget_on_non_home' );
В этом случае виджет custom_widget
будет отображаться только на главной странице, а на всех остальных — скрыт.
Заключение
Функция wp_unregister_sidebar_widget()
предоставляет разработчикам мощный инструмент для управления виджетами в WordPress. С её помощью можно настраивать отображение виджетов в зависимости от условий, что делает вашу тему более адаптивной и удобной для пользователей.