wp_unregister_sidebar_widget()WP 2.2.0

Удаляет ранее зарегистрированный виджет по переданному ID виджета.

  • Эта функция удаляет виджет и в админ-панели, если вызвать ее в файле темы functions.php.
  • ID виджета можно узнать посмотрев атрибут id блока виджета в админ панели. Например, блок виджета с ID "your_widget_1" будет иметь такой атрибут: id="widget-17_your_widget_1". Блок какого-нибудь другого виджета будет иметь подобный id="widget-18_my_widget"
Хуки из функции

Возвращает

null. Ничего не возвращает.

Использование

wp_unregister_sidebar_widget( $id );
$id(строка) (обязательный)
ID виджета. ID указывается при регистрации виджета функцией: wp_register_sidebar_widget().

Примеры

0

#1 Отмена виджета

Задача: Нужно отменить определенный виджет на всех страницах типа is_category().

Решение: Предположим используя wp_register_sidebar_widget() в functions.php мы зарегистрировали виджет "my_widget", так:

function my_widget_display(){
	// Вывод виджета
}
wp_register_sidebar_widget(
	'my_widget',        // ID виджета
	'Мой виджет',           // Заголовок виджета
	'my_widget_display',  // Функция обратного вызова
);

Затем, мы добавили этот виджет в панель виджетов 'right-sidebar', где среди прочих виджетов выводится и наш виджет в боковой панели темы. Панель с виджетами выводим в sidebar.php так:

<ul id="sidebar">
	<?php dynamic_sidebar( 'right-sidebar' ); ?>
</ul>

Теперь, чтобы отключить виджет "my_widget" на всех страницах категорий, добавим следующий код перед выводом панели виджетов:

<?php wp_unregister_sidebar_widget( 'my_widget' ); ?>

<ul id="sidebar">
	<?php dynamic_sidebar( 'right-sidebar' ); ?>
</ul>

Список изменений

С версии 2.2.0 Введена.

Код wp_unregister_sidebar_widget() WP 6.5.2

function wp_unregister_sidebar_widget( $id ) {

	/**
	 * Fires just before a widget is removed from a sidebar.
	 *
	 * @since 3.0.0
	 *
	 * @param int|string $id The widget ID.
	 */
	do_action( 'wp_unregister_sidebar_widget', $id );

	wp_register_sidebar_widget( $id, '', '' );
	wp_unregister_widget_control( $id );
}