# add_meta_box()

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

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

## Сигнатура

```php
add_meta_box( string $id, string $title, callable $callback, string|array|WP_Screen $screen = null, string $context = 'advanced', string $priority = 'default', array $callback_args = null )
```

## Описание

Добавляет метабокс на один или несколько экранов.

## Параметры

- `$id` `string` — обязательный. ID метабокса (используется в атрибуте 'id' метабокса).
- `$title` `string` — обязательный. Заголовок метабокса.
- `$callback` `callable` — обязательный. Функция, заполняющая метабокс нужным содержимым.
  
  Функция должна выводить результат через echo.
- `$screen` `string|array|WP_Screen` — необязательный, по умолчанию `null`. Экран или экраны, на которых показывать метабокс (например, тип записи, 'link' или 'comment'). Принимает один ID экрана, объект WP_Screen или массив ID экранов. По умолчанию — текущий экран. Если вы использовали add_menu_page() или add_submenu_page() для создания нового экрана (и, соответственно, screen_id), убедитесь, что слаг меню соответствует ограничениям sanitize_key() , иначе меню 'screen' может некорректно отображаться на вашей странице.
- `$context` `string` — необязательный, по умолчанию `'advanced'`. Контекст в пределах экрана, где должен отображаться метабокс. Доступные контексты различаются от экрана к экрану. Контексты экрана редактирования записи: 'normal', 'side' и 'advanced'. Контексты экрана комментариев: 'normal' и 'side'. Метабоксы меню (секции-аккордеоны) используют контекст 'side'. Глобальное значение по умолчанию — 'advanced'.
- `$priority` `string` — необязательный, по умолчанию `'default'`. Приоритет в пределах контекста, с которым должен отображаться метабокс.
  
  Принимает 'high', 'core', 'default' или 'low'. Значение по умолчанию 'default'.
- `$callback_args` `array` — необязательный, по умолчанию `null`. Данные, которые должны быть заданы как свойство $args массива метабокса (это второй параметр, передаваемый в вашу функцию обратного вызова).

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

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

```php
function add_meta_box( $id, $title, $callback, $screen = null, $context = 'advanced', $priority = 'default', $callback_args = null ) {
	global $wp_meta_boxes;

	if ( empty( $screen ) ) {
		$screen = get_current_screen();
	} elseif ( is_string( $screen ) ) {
		$screen = convert_to_screen( $screen );
	} elseif ( is_array( $screen ) ) {
		foreach ( $screen as $single_screen ) {
			add_meta_box( $id, $title, $callback, $single_screen, $context, $priority, $callback_args );
		}
	}

	if ( ! isset( $screen->id ) ) {
		return;
	}

	$page = $screen->id;

	if ( ! isset( $wp_meta_boxes ) ) {
		$wp_meta_boxes = array();
	}
	if ( ! isset( $wp_meta_boxes[ $page ] ) ) {
		$wp_meta_boxes[ $page ] = array();
	}
	if ( ! isset( $wp_meta_boxes[ $page ][ $context ] ) ) {
		$wp_meta_boxes[ $page ][ $context ] = array();
	}

	foreach ( array_keys( $wp_meta_boxes[ $page ] ) as $a_context ) {
		foreach ( array( 'high', 'core', 'default', 'low' ) as $a_priority ) {
			if ( ! isset( $wp_meta_boxes[ $page ][ $a_context ][ $a_priority ][ $id ] ) ) {
				continue;
			}

			// If a core box was previously removed, don't add.
			if ( ( 'core' === $priority || 'sorted' === $priority )
				&& false === $wp_meta_boxes[ $page ][ $a_context ][ $a_priority ][ $id ]
			) {
				return;
			}

			// If a core box was previously added by a plugin, don't add.
			if ( 'core' === $priority ) {
				/*
				 * If the box was added with default priority, give it core priority
				 * to maintain sort order.
				 */
				if ( 'default' === $a_priority ) {
					$wp_meta_boxes[ $page ][ $a_context ]['core'][ $id ] = $wp_meta_boxes[ $page ][ $a_context ]['default'][ $id ];
					unset( $wp_meta_boxes[ $page ][ $a_context ]['default'][ $id ] );
				}
				return;
			}

			// If no priority given and ID already present, use existing priority.
			if ( empty( $priority ) ) {
				$priority = $a_priority;
				/*
				 * Else, if we're adding to the sorted priority, we don't know the title
				 * or callback. Grab them from the previously added context/priority.
				 */
			} elseif ( 'sorted' === $priority ) {
				$title         = $wp_meta_boxes[ $page ][ $a_context ][ $a_priority ][ $id ]['title'];
				$callback      = $wp_meta_boxes[ $page ][ $a_context ][ $a_priority ][ $id ]['callback'];
				$callback_args = $wp_meta_boxes[ $page ][ $a_context ][ $a_priority ][ $id ]['args'];
			}

			// An ID can be in only one priority and one context.
			if ( $priority !== $a_priority || $context !== $a_context ) {
				unset( $wp_meta_boxes[ $page ][ $a_context ][ $a_priority ][ $id ] );
			}
		}
	}

	if ( empty( $priority ) ) {
		$priority = 'low';
	}

	if ( ! isset( $wp_meta_boxes[ $page ][ $context ][ $priority ] ) ) {
		$wp_meta_boxes[ $page ][ $context ][ $priority ] = array();
	}

	$wp_meta_boxes[ $page ][ $context ][ $priority ][ $id ] = array(
		'id'       => $id,
		'title'    => $title,
		'callback' => $callback,
		'args'     => $callback_args,
	);
}
```

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

- 4.4.0 — The $screen parameter now accepts an array of screen IDs.
- 2.5.0 — Introduced.

## Связанные

Использует: [`get_current_screen`](https://chugunov.pro/api-wordpress/functions/get_current_screen/), [`convert_to_screen`](https://chugunov.pro/api-wordpress/functions/convert_to_screen/), [`add_meta_box`](https://chugunov.pro/api-wordpress/functions/add_meta_box/).
Используется в: [`register_and_do_post_meta_boxes`](https://chugunov.pro/api-wordpress/functions/register_and_do_post_meta_boxes/), [`wp_add_dashboard_widget`](https://chugunov.pro/api-wordpress/functions/wp_add_dashboard_widget/), [`add_meta_box`](https://chugunov.pro/api-wordpress/functions/add_meta_box/), [`do_meta_boxes`](https://chugunov.pro/api-wordpress/functions/do_meta_boxes/), [`wp_nav_menu_setup`](https://chugunov.pro/api-wordpress/functions/wp_nav_menu_setup/), [`wp_nav_menu_post_type_meta_boxes`](https://chugunov.pro/api-wordpress/functions/wp_nav_menu_post_type_meta_boxes/), [`wp_nav_menu_taxonomy_meta_boxes`](https://chugunov.pro/api-wordpress/functions/wp_nav_menu_taxonomy_meta_boxes/).

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