# do_accordion_sections()

URL: https://chugunov.pro/api-wordpress/functions/do_accordion_sections/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 3.6.0.

## Сигнатура

```php
do_accordion_sections( string|object $screen, string $context, mixed $data_object ): int
```

## Описание

В значительной степени состоит из абстрагированного кода из do_meta_boxes() ; служит для построения метабоксов в виде элементов списка для отображения в виде сворачиваемого аккордеона.

## Параметры

- `$screen` `string|object` — обязательный. Идентификатор экрана.
- `$context` `string` — обязательный. Контекст экрана, для которого нужно отобразить секции-аккордеоны.
- `$data_object` `mixed` — обязательный. Передаётся в функцию обратного вызова секции как первый параметр.

## Возвращаемое значение

`int`

## Исходный код

Файл: `wp-admin/includes/template.php:1539`

```php
function do_accordion_sections( $screen, $context, $data_object ) {
	global $wp_meta_boxes;

	wp_enqueue_script( 'accordion' );

	if ( empty( $screen ) ) {
		$screen = get_current_screen();
	} elseif ( is_string( $screen ) ) {
		$screen = convert_to_screen( $screen );
	}

	$page = $screen->id;

	$hidden = get_hidden_meta_boxes( $screen );
	?>
	<div id="side-sortables" class="accordion-container">
		<ul class="outer-border">
	<?php
	$i          = 0;
	$first_open = false;

	if ( isset( $wp_meta_boxes[ $page ][ $context ] ) ) {
		foreach ( array( 'high', 'core', 'default', 'low' ) as $priority ) {
			if ( isset( $wp_meta_boxes[ $page ][ $context ][ $priority ] ) ) {
				foreach ( $wp_meta_boxes[ $page ][ $context ][ $priority ] as $box ) {
					if ( false === $box || ! $box['title'] ) {
						continue;
					}

					++$i;
					$hidden_class = in_array( $box['id'], $hidden, true ) ? 'hide-if-js' : '';

					$open_class    = '';
					$aria_expanded = 'false';
					if ( ! $first_open && empty( $hidden_class ) ) {
						$first_open    = true;
						$open_class    = 'open';
						$aria_expanded = 'true';
					}
					?>
					<li class="control-section accordion-section <?php echo $hidden_class; ?> <?php echo $open_class; ?> <?php echo esc_attr( $box['id'] ); ?>" id="<?php echo esc_attr( $box['id'] ); ?>">
						<h3 class="accordion-section-title hndle">
							<button type="button" class="accordion-trigger" aria-expanded="<?php echo $aria_expanded; ?>" aria-controls="<?php echo esc_attr( $box['id'] ); ?>-content">
								<span class="accordion-title">
									<?php echo esc_html( $box['title'] ); ?>
									<span class="dashicons dashicons-arrow-down" aria-hidden="true"></span>
								</span>
							</button>
						</h3>
						<div class="accordion-section-content <?php postbox_classes( $box['id'], $page ); ?>" id="<?php echo esc_attr( $box['id'] ); ?>-content">
							<div class="inside">
								<?php call_user_func( $box['callback'], $data_object, $box ); ?>
							</div><!-- .inside -->
						</div><!-- .accordion-section-content -->
					</li><!-- .accordion-section -->
					<?php
				}
			}
		}
	}
	?>
		</ul><!-- .outer-border -->
	</div><!-- .accordion-container -->
	<?php
	return $i;
}
```

## История изменений

- 3.6.0 — Introduced.

## Связанные

Используется в: [`get_current_screen`](https://chugunov.pro/api-wordpress/functions/get_current_screen/), [`get_hidden_meta_boxes`](https://chugunov.pro/api-wordpress/functions/get_hidden_meta_boxes/), [`convert_to_screen`](https://chugunov.pro/api-wordpress/functions/convert_to_screen/), [`postbox_classes`](https://chugunov.pro/api-wordpress/functions/postbox_classes/), [`esc_attr`](https://chugunov.pro/api-wordpress/functions/esc_attr/), [`esc_html`](https://chugunov.pro/api-wordpress/functions/esc_html/), [`wp_enqueue_script`](https://chugunov.pro/api-wordpress/functions/wp_enqueue_script/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/do_accordion_sections/
