Функция is_registered_sidebar()
позволяет проверить, была ли зарегистрирована определённая область для виджетов (сайдбар) в WordPress. Это полезно для динамического управления регистрацией виджетов и предотвращения дублирующихся регистраций.
Функция принимает идентификатор сайдбара, который был указан при его регистрации с помощью функции register_sidebar()
, и возвращает логическое значение. Если сайдбар с данным идентификатором зарегистрирован, возвращается true
, в противном случае — false
.
is_registered_sidebar( string|int $sidebar_id ): bool
$sidebar_id
(обязательный) — идентификатор (ID) области для виджетов, указанный при регистрации сайдбара.- Возвращает
true
, если сайдбар зарегистрирован, иfalse
, если нет.
Пример 1: Проверка и регистрация сайдбара
Этот пример демонстрирует, как можно проверить, зарегистрирован ли сайдбар с определённым ID, и, если нет, зарегистрировать его.
add_action( 'widgets_init', 'register_my_custom_sidebar' );
function register_my_custom_sidebar() {
// Проверяем, зарегистрирован ли сайдбар с ID 'footer-widgets'
if ( ! is_registered_sidebar( 'footer-widgets' ) ) {
// Если не зарегистрирован, регистрируем его
register_sidebar( array(
'name' => 'Footer Widgets',
'id' => 'footer-widgets',
'description' => 'Эта область предназначена для виджетов в футере.',
'before_widget' => '<div class="footer-widget">',
'after_widget' => '</div>',
'before_title' => '<h4>',
'after_title' => '</h4>',
) );
}
}
В этом примере функция проверяет, существует ли сайдбар с ID footer-widgets
. Если сайдбар не был зарегистрирован, он будет добавлен в систему с заданными параметрами.
Пример 2: Проверка перед выводом сайдбара
Иногда нужно убедиться, что сайдбар зарегистрирован, прежде чем пытаться вывести его содержимое. В следующем примере проверяется, существует ли сайдбар, и только в случае его регистрации выполняется вывод виджетов.
if ( is_registered_sidebar( 'sidebar-main' ) ) {
// Если сайдбар 'sidebar-main' зарегистрирован, выводим его содержимое
if ( is_active_sidebar( 'sidebar-main' ) ) {
echo '<div id="main-sidebar">';
dynamic_sidebar( 'sidebar-main' );
echo '</div>';
} else {
echo '<p>Нет активных виджетов для отображения.</p>';
}
} else {
echo '<p>Сайдбар не зарегистрирован.</p>';
}
Этот код проверяет, зарегистрирован ли сайдбар с ID sidebar-main
. Если он зарегистрирован и в нём есть активные виджеты, они будут выведены на страницу. Если виджетов нет, выводится сообщение о их отсутствии.
Пример 3: Регистрация нескольких сайдбаров с проверкой
Этот пример демонстрирует, как можно использовать функцию is_registered_sidebar()
для динамической регистрации нескольких сайдбаров.
add_action( 'widgets_init', 'register_additional_sidebars' );
function register_additional_sidebars() {
$sidebars = array(
'header-sidebar' => 'Сайдбар в шапке',
'secondary-sidebar' => 'Вторичный сайдбар',
'extra-sidebar' => 'Дополнительный сайдбар',
);
foreach ( $sidebars as $id => $name ) {
if ( ! is_registered_sidebar( $id ) ) {
register_sidebar( array(
'name' => $name,
'id' => $id,
'description' => 'Область для виджетов: ' . $name,
'before_widget' => '<div class="widget-area">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
}
}
}
Здесь функция register_additional_sidebars
проверяет несколько идентификаторов сайдбаров в массиве $sidebars
. Если какой-либо из них не зарегистрирован, он добавляется в систему.
Заключение
Функция is_registered_sidebar()
является полезным инструментом для проверки наличия зарегистрированных сайдбаров перед их выводом или динамической регистрацией. Это позволяет избежать повторных регистраций и контролировать работу виджетов на сайте WordPress.