функция
since 2.5.0
add_meta_box()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
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
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. |

