register_sidebars()WP 2.2.0

Создает указанное количество панелей виджетов (сайдбаров) сразу.

Функция создана для удобного создания нескольких панелей виджетов.

Используйте register_sidebar(), когда нужно создать только одну панель, или используйте эту функцию, указав единицу (1) в первом параметре.

Работает на основе: register_sidebar()

Хуков нет.

Возвращает

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

Шаблон использования

$args = array(
	'name'          => 'Sidebar %d',
	'id'            => "sidebar",
	'before_widget' => '<li id="%1$s" class="widget %2$s">',
	'after_widget'  => '</li>',
	'before_title'  => '<h2 class="widgettitle">',
	'after_title'   => '</h2>'
);
register_sidebars( 2, $args );

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

register_sidebars( $number, $args );
$number(число)
Сколько панелей создать, указывается число.
По умолчанию: 1
$args(строка/массив)

Параметры для создаваемых панелей виджетов.

Параметры Можно указывать в виде ассоциативного массива или в виде строки.

  • name - Название панели. Названия у создаваемых панелей должны быть разные, используйте %d в названии, которая будет заменена на порядковый номер панели. По умолчанию 'Sidebar %d'.

  • id - Идентификатор панели. К каждой следующией после первой панели автоматически будет добавлено число порядкового номера. Например если мы будем создавать 3 панели и укажем в id "sidebar", то получим: "Sidebar", "Sidebar-2", "Sidebar-3".

  • description - описание панели. При создании нескольких сайдбаров одновременно этот параметр не имеет смысла и по умолчанию пустой.

  • before_widget - HTML который будет расположен перед каждым виджетом в панели.

  • after_widget - HTML который будет расположен после каждого виджет в панели.

  • before_title - HTML который будет расположен перед каждым заголовком виджета панели.

  • after_title - HTML который будет расположен после каждого заголовка виджета панели.

Также можно указать параметры из register_sidebar().

По умолчанию: по умолчанию

Примеры

3

#1 Регистрация одной панели Аналог функции register_sidebar()

register_sidebars();
2

#2 Создадим 2 панели и поместим заголовок каждого виджета в тег <h1>:

register_sidebars( 2, ['before_title'=>'<h1>','after_title'=>'</h1>'] );

Тоже самое, только укажем параметры в виде строки:

register_sidebars( 2, "before_title=<h1>&after_title=</h1>" )
1

#3 Регистрация двух панелей

Этот пример показывает как зарегистрировать 2 панели с названиями "Foobar 1" and "Foobar 2":

register_sidebars( 2, ['name'=>'Foobar %d'] );

Заметки

  • Смотрите: register_sidebar() The second parameter is documented by register_sidebar() and is the same here.
  • Global. Массив. $wp_registered_sidebars The new sidebars are stored in this array by sidebar ID.

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

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

Код register_sidebars() WP 6.7.1

function register_sidebars( $number = 1, $args = array() ) {
	global $wp_registered_sidebars;
	$number = (int) $number;

	if ( is_string( $args ) ) {
		parse_str( $args, $args );
	}

	for ( $i = 1; $i <= $number; $i++ ) {
		$_args = $args;

		if ( $number > 1 ) {
			if ( isset( $args['name'] ) ) {
				$_args['name'] = sprintf( $args['name'], $i );
			} else {
				/* translators: %d: Sidebar number. */
				$_args['name'] = sprintf( __( 'Sidebar %d' ), $i );
			}
		} else {
			$_args['name'] = isset( $args['name'] ) ? $args['name'] : __( 'Sidebar' );
		}

		/*
		 * Custom specified ID's are suffixed if they exist already.
		 * Automatically generated sidebar names need to be suffixed regardless starting at -0.
		 */
		if ( isset( $args['id'] ) ) {
			$_args['id'] = $args['id'];
			$n           = 2; // Start at -2 for conflicting custom IDs.
			while ( is_registered_sidebar( $_args['id'] ) ) {
				$_args['id'] = $args['id'] . '-' . $n++;
			}
		} else {
			$n = count( $wp_registered_sidebars );
			do {
				$_args['id'] = 'sidebar-' . ++$n;
			} while ( is_registered_sidebar( $_args['id'] ) );
		}
		register_sidebar( $_args );
	}
}