register_sidebar() WP 2.2.0

Реєструє панель віджетів (місце, куди розміщуються віджети в адмін-панелі, щоб потім вивести їх у лицьовій частині).

Функція реєструє панель (місце, контейнер) для віджетів та формат виведення для кожного віджету:

  • html тег заголовка.
  • html тег до і після віджету.

Зареєструвавши панель, в адмін-панелі з’явиться місце, куди можна розміщувати віджети. Розмістивши віджети на панелі, ми зможемо вивести панель з віджетами в шаблоні за допомогою функції dynamic_sidebar() , (див. приклад 2).

Функцію потрібно підключати до події widgets_init .

Ця функція автоматично активує підтримку віджетів. Дивіться add_theme_support(‘widgets’)

Не використовуйте назви ідентифікаторів для ID з цього списку . Там, за посиланням, ви знайдете невелику функцію, яка збирає вже використовувані ID в WordPress.

Використовуйте register_sidebars() , щоб створити кілька панелей за один раз. Це дозволить створити унікальне ім’я для кожної панелі, наприклад: “Правий сайдбар”, “Лівий сайдбар”. Незважаючи на те, що ці назви видно лише в адмін-панелі, важливо дати користувачеві уявлення про те, де буде виводитись панель.

register_sidebars() також рекомендується використовувати, якщо потрібно зареєструвати кілька однотипних панелей для віджетів (назви відрізняються числами), наприклад: Панель 1 , Панель 2 , Панель 3 .

Дефолтні значення параметрів before/after розраховані на теми, які створюють бічні панелі у вигляді списку LI з заголовками в H2 тегу. Така реєстрація рекомендується розробниками WordPress для всіх тем.

Якщо з якихось причин маркування потрібно змінити, рекомендується скопіювати id ( id=”%1$s” ) і class ( class=”widget %2$s” ) атрибути як зазначено за умовчанням і не вказувати їх жорстко. Потрібно, щоб вони створювалися динамічно за допомогою функції sprintf().

Не можна залишати параметри nameта idпорожніми!

Їх можна або не вказувати взагалі, або обов’язково вказати при цьому, щоб вони були унікальними і не порожніми.

Якщо не визначити id або name, то для них буде використано значення за замовчуванням з інкрементом:

'name' => sprintf(__('Sidebar %d'), $i ),
'id' => "sidebar-$i",

Де $i буде числом рівним кількох панелей на сайті + 1.

Основа для:
register_sidebars()

Хуки з функції

Повертає

Строку. Ідентифікатор передано у параметрі ID.

Шаблон використання

add_action( 'widgets_init', 'register_my_widgets');
function register_my_widgets(){

	register_sidebar(array(
		'name' => sprintf(__('Sidebar %d'), $i ),
		'id' => "sidebar-$i",
		'description' => '',
		'class' => '',
		'before_widget' => '<li id="%1$s" class="widget %2$s">',
		'after_widget' => "</li>n",
		'before_title' => '<h2 class="widgettitle">',
		'after_title' => "</h2>n",
		'before_sidebar' => '', // WP 5.6
		'after_sidebar' => '', // WP 5.6
	)));
}

Використання

register_sidebar($args);
$args
(рядок/масив)

Аргументи для реєстрації панелі віджетів. Можна вказувати у вигляді рядка або масиву:
Якщо у вигляді рядка, аргументи потрібно розділяти знаком &:

'name=Sidebar&id=my_prefix_sidebar'

Ті самі аргументи в масиві:

array(
	'name' => 'Sidebar',
	'id' => 'my_prefix_sidebar',
)

За промовчанням: параметри за промовчанням.

Аргументи параметра $args

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

name
(рядок)
Назва панелі віджетів. Назва буде видно у адмін-панелі WordPress. За замовчуванням “Бічне стовпчик 1” (локалізація від
Sidebar $i, де $i порядковий номер сайдбара). Значення не повинно бути порожнім!


Типово: sprintf(__(‘Sidebar %d’), $i )
id
(рядок)
Ідентифікатор віджету. Рядок, в якому не повинно бути великих літер і прогалин. Значення не повинно бути порожнім, якщо залишити цей параметр порожнім, то в режимі розробки (при дебазі) отримайте нотатку типу E_USER_NOTICE.


Типово: “sidebar-$i”
description
(рядок)
Текст, що описує, де буде виводитися панель віджетів. Відображається в панелі керування віджетами.


За замовчуванням: ”
class
(рядок)
CSS клас, який буде доданий до головного HTML тегу панелі віджетів.


За замовчуванням: ”
before_widget
(рядок)
HTML-код, який буде розташований перед кожним віджетом в панелі. Наприклад:
<li class="my-widget">. Конструкції
будуть замінені на id %1$sі
%2$sclass віджету, що використовується в сайдбарі.


За замовчуванням: ‘ <li id="%1$s" class="widget %2$s">
after_widget
(рядок)
HTML код, який буде розміщений після кожного віджету на панелі. Наприклад:
</li>.


За замовчуванням: ” </li>n
before_title
(рядок)
HTML код перед заголовком віджету.


За замовчуванням: ‘ <h2 class="widgettitle">
after_title
(рядок)
HTML код після заголовка віджету.


За замовчуванням: ” </h2>n
before_sidebar
(рядок) (WP 5.6)
HTML перед сайдбар. Отримує
аргумент
$id і
$class%1$s в
. Виводиться після хука
dynamic_sidebar_before .
За замовчуванням: ”%2$s

after_sidebar
(рядок) (WP 5.6)
HTML після сайдбару. Виводиться перед хуком
dynamic_sidebar_after .


За замовчуванням: ”
$show_in_rest
(true/false) (WP 5.9)
Чи потрібно показувати цей сайдбар публічно у REST API.


За замовчуванням: false (показувати лише адміністраторам).

Приклади

1

#1 Зареєструємо панель віджетів для головної сторінки сайту

Додамо код у functions.php :

function register_my_widgets(){
	register_sidebar(array(
		'name' => 'Бічна панель на головній сторінці',
		'id' => 'homepage-sidebar',
		'description' => 'Виводитись як бічна панель тільки на головній сторінці сайту.',
		'before_widget' => '<li class="homepage-widget-block">',
		'after_widget' => '</li>',
		'before_title' => '<h2 class="widgettitle">',
		'after_title' => '</h2>',
	)));
}
add_action( 'widgets_init', 'register_my_widgets');

У файл home.php вставимо виведення панелі:

<div class="custom">
	<?php
	if ( function_exists('dynamic_sidebar') )
		dynamic_sidebar('homepage-sidebar');
	?>
</div>
0

#2 Реєстрація віджетів для бічної панелі сайту

Код нижче зареєструє панель під назвою “Права бічна панель сайту”. Назва панелі буде обгорнута в теги <div class="title">і </div>:

function register_my_widgets(){
	register_sidebar(array(
		'name' => "Права бічна панель сайту",
		'id' => 'right-sidebar',
		'description' => 'Ці віджети будуть показані в правій колонці сайту',
		'before_title' => '<h2>',
		'after_title' => '</h2>'
	)));
}
add_action( 'widgets_init', 'register_my_widgets');

Після того, як ми розмістимо цей код у файл теми functions.php, в адмін-панелі на сторінці віджетів з’явиться панель, куди ми зможемо додати віджети. У шаблоні ця панель виводиться за допомогою функції dynamic_sidebar() :

<?php
	if ( function_exists('dynamic_sidebar') )
		dynamic_sidebar('right-sidebar');
?>

Ви можете купити недорогі ріпини в Пінтересті за допомогою сервісу Doctor SMM . На сайті Вам буде запропоновано вибір будь-якої необхідної кількості матеріалу. До того ж, Ви зможете розвивати не лише пости, а й усю сторінку цілком, зробивши замовлення ще й на передплатників.

нотатки

  • Global. Масив. $wp_registered_sidebars Registered sidebars.

список змін

З версії 2.2.0Введено.
З версії 5.6.0Added before_sidebar and after_sidebar arguments.
З версії 5.9.0Added the show_in_rest argument.

Код register_sidebar() WP 6.0.2

function register_sidebar( $args = array() ) {
	global $wp_registered_sidebars;

	$i = count($wp_registered_sidebars) + 1;

	$id_is_empty = empty($args['id']);

	$defaults = array(
		/* translators: %d: Sidebar number. */
		'name' => sprintf( __( 'Sidebar %d' ), $i ),
		'id' => "sidebar-$i",
		'description' => '',
		'class' => '',
		'before_widget' => '<li id="%1$s" class="widget %2$s">',
		'after_widget' => "</li>n",
		'before_title' => '<h2 class="widgettitle">',
		'after_title' => "</h2>n",
		'before_sidebar' => '',
		'after_sidebar' => '',
		'show_in_rest' => false,
	);

	/**
	 * Filters the sidebar default arguments.
	 *
	 * @ Since 5.3.0
	 *
	 * @see register_sidebar()
	 *
	 * @param array $defaults The default sidebar arguments.
	 */
	$sidebar = wp_parse_args( $args, apply_filters( 'register_sidebar_defaults', $defaults ) );

	if ( $id_is_empty ) {
		_doing_it_wrong(
			__FUNCTION__,
			sprintf(
				/* translators: 1: The 'id' argument, 2: Sidebar name, 3: Recommended 'id' value. */
				__( 'No %1$s був налаштований в arguments array для "%2$s" sidebar. Defaulting до "%3$s". Manually set the %1$s на "%3$s" to silence this notice and keep existing sidebar content.' ),
				'<code>id</code>',
				$sidebar['name'],
				$sidebar['id']
			),
			'4.2.0'
		);
	}

	$wp_registered_sidebars[ $sidebar['id'] ] = $sidebar;

	add_theme_support( 'widgets' );

	/**
	 * Fires once a sidebar має бути registered.
	 *
	 * @ Since 3.0.0
	 *
	 * @param array $sidebar Розміщені argumentи для записаної sidebar.
	 */
	do_action( 'register_sidebar', $sidebar);

	return $sidebar['id'];
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *