add_meta_box()

Добавляет блок метаданных на один или несколько экранов
Функция WordPress
INT 2.5.0
WordPress Icon

Описание функции

Функция add_meta_box() используется для добавления мета-блока на один или несколько экранов в административной панели WordPress. Мета-блоки представляют собой дополнительную информацию или настройки, которые могут быть добавлены к различным типам записей, таким как посты, страницы, пользователи и т. д.

Мета-блоки обычно отображаются на экране редактирования записи и позволяют пользователям вводить и сохранять дополнительные данные, которые не входят в основное содержимое записи.

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

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 )

Функция add_meta_box() принимает следующие параметры:

  • $id (string) — Обязательный. Идентификатор мета-блока (используется в атрибуте ‘id’ для мета-блока).
  • $title (string) — Обязательный. Заголовок мета-блока.
  • $callback (callable) — Обязательный. Функция, которая заполняет мета-блок необходимым содержимым. Функция должна выводить свой результат с помощью echo.
  • $screen (string|array|WP_Screen) — Необязательный. Экран или экраны, на которых должен отображаться мета-блок (например, тип записи, ‘link’ или ‘comment’). Принимает один идентификатор экрана, объект WP_Screen или массив идентификаторов экранов. По умолчанию используется текущий экран.
  • $context (string) — Необязательный. Контекст, в котором должен отображаться мета-блок на экране. Доступные контексты зависят от экрана. Контексты редактирования записей включают ‘normal’, ‘side’ и ‘advanced’. Контексты экранов комментариев включают ‘normal’ и ‘side’. Все мета-блоки меню (разделы аккордеона) используют контекст ‘side’. Глобальное значение по умолчанию — ‘advanced’.
  • $priority (string) — Необязательный. Приоритет отображения мета-блока в контексте. Принимает значения ‘high’, ‘core’, ‘default’ или ‘low’. По умолчанию — ‘default’.
  • $callback_args (array) — Необязательный. Данные, которые должны быть установлены в свойство $args массива мета-блока (второй параметр, передаваемый в вашу функцию обратного вызова). По умолчанию — null.
<?php
function my_meta_box_callback( $post ) {
    // Вывод содержимого мета-блока
    echo 'Это содержимое мета-блока';
}
function my_meta_box() {
    // Добавление мета-блока на экран редактирования записи
    add_meta_box( 'my-meta-box', 'Мой мета-блок', 'my_meta_box_callback', 'post', 'normal', 'high' );
}
add_action( 'add_meta_boxes', 'my_meta_box' );
?>

В приведенном выше примере мы создаем функцию обратного вызова my_meta_box_callback(), которая выводит содержимое мета-блока. Затем мы создаем функцию my_meta_box(), которая использует add_meta_box() для добавления мета-блока на экран редактирования записи типа ‘post’. Мета-блок будет отображаться в нормальном контексте с высоким приоритетом.

Мы используем хук add_meta_boxes, чтобы вызвать функцию my_meta_box() и добавить мета-блок на экран редактирования записи.

Примеры использования

Добавление метабокса на страницу редактирования поста


function wpdocs_add_meta_box() {
    $screens = array( 'post' );
    foreach ( $screens as $screen ) {
        add_meta_box(
            'my_meta_box_id',
            'My Meta Box',
            'wpdocs_my_meta_box_callback',
            $screen
        );
    }
}
add_action( 'add_meta_boxes', 'wpdocs_add_meta_box' );
function wpdocs_my_meta_box_callback( $post ) {
    // Content of the meta box
}

Отображение метабокса на странице создания нового поста


function wpdocs_add_meta_box() {
    $screens = array( 'post' );
    foreach ( $screens as $screen ) {
        add_meta_box(
            'my_meta_box_id',
            'My Meta Box',
            'wpdocs_my_meta_box_callback',
            $screen,
            'advanced',
            'default'
        );
    }
}
add_action( 'add_meta_boxes', 'wpdocs_add_meta_box' );
function wpdocs_my_meta_box_callback( $post ) {
    // Content of the meta box
}

Использование метабокса на странице редактирования комментария


function wpdocs_add_meta_box() {
    $screens = array( 'comment' );
    foreach ( $screens as $screen ) {
        add_meta_box(
            'my_meta_box_id',
            'My Meta Box',
            'wpdocs_my_meta_box_callback',
            $screen,
            'normal',
            'default'
        );
    }
}
add_action( 'add_meta_boxes', 'wpdocs_add_meta_box' );
function wpdocs_my_meta_box_callback( $comment ) {
    // Content of the meta box
}

Настройка метабокса на странице редактирования пользовательского типа записи


function wpdocs_add_meta_box() {
    $screens = array( 'custom_post_type' );
    foreach ( $screens as $screen ) {
        add_meta_box(
            'my_meta_box_id',
            'My Meta Box',
            'wpdocs_my_meta_box_callback',
            $screen,
            'side',
            'default'
        );
    }
}
add_action( 'add_meta_boxes', 'wpdocs_add_meta_box' );
function wpdocs_my_meta_box_callback( $post ) {
    // Content of the meta box
}

Отображение метабокса на странице редактирования ссылки


function wpdocs_add_meta_box() {
    $screens = array( 'link' );
    foreach ( $screens as $screen ) {
        add_meta_box(
            'my_meta_box_id',
            'My Meta Box',
            'wpdocs_my_meta_box_callback',
            $screen,
            'side',
            'default'
        );
    }
}
add_action( 'add_meta_boxes', 'wpdocs_add_meta_box' );
function wpdocs_my_meta_box_callback( $post ) {
    // Content of the meta box
}

Вопросы и ответы

Как добавить метабокс в WordPress?

Для добавления метабокса в WordPress используется функция add_meta_box(). Она принимает несколько параметров, включая ID метабокса, заголовок, функцию, которая заполняет метабокс контентом, и другие настройки.

Пример использования функции add_meta_box():


function my_meta_box_callback( $post ) {
    // Код для заполнения метабокса контентом
}
function my_meta_box() {
    add_meta_box( 'my-meta-box', 'Мой метабокс', 'my_meta_box_callback', 'post', 'normal', 'high' );
}
add_action( 'add_meta_boxes', 'my_meta_box' );

Как изменить заголовок метабокса?

Заголовок метабокса можно изменить, передав его вторым параметром в функцию add_meta_box().

Пример изменения заголовка метабокса:


function my_meta_box_callback( $post ) {
    // Код для заполнения метабокса контентом
}
function my_meta_box() {
    add_meta_box( 'my-meta-box', 'Новый заголовок', 'my_meta_box_callback', 'post', 'normal', 'high' );
}
add_action( 'add_meta_boxes', 'my_meta_box' );

Как изменить контекст отображения метабокса?

Контекст отображения метабокса можно изменить, передав его пятой параметром в функцию add_meta_box(). Доступны различные контексты, такие как ‘normal’, ‘side’ и ‘advanced’.

Пример изменения контекста отображения метабокса:


function my_meta_box_callback( $post ) {
    // Код для заполнения метабокса контентом
}
function my_meta_box() {
    add_meta_box( 'my-meta-box', 'Мой метабокс', 'my_meta_box_callback', 'post', 'side', 'high' );
}
add_action( 'add_meta_boxes', 'my_meta_box' );

Как изменить приоритет отображения метабокса?

Приоритет отображения метабокса можно изменить, передав его шестым параметром в функцию add_meta_box(). Доступны значения ‘high’, ‘core’, ‘default’ и ‘low’.

Пример изменения приоритета отображения метабокса:


function my_meta_box_callback( $post ) {
    // Код для заполнения метабокса контентом
}
function my_meta_box() {
    add_meta_box( 'my-meta-box', 'Мой метабокс', 'my_meta_box_callback', 'post', 'normal', 'low' );
}
add_action( 'add_meta_boxes', 'my_meta_box' );

Как указать на каких экранах отображать метабокс?

Функция add_meta_box() позволяет добавить метабокс на один или несколько экранов. Для этого в параметре $screen нужно указать идентификаторы экранов, на которых должен отображаться метабокс.

Пример использования:


add_meta_box( 'my_meta_box', 'My Meta Box', 'my_meta_box_callback', 'post', 'normal', 'high' );

В данном примере метабокс будет отображаться на экране редактирования записей типа «post».

Как вывести содержимое метабокса?

Для вывода содержимого метабокса необходимо создать функцию, которая будет заполнять метабокс нужным контентом и вызвать ее в параметре $callback функции add_meta_box(). Функция должна использовать echo для вывода контента.

Пример использования:


function my_meta_box_callback( $post ) {
    // Вывод контента метабокса
    echo 'This is my meta box content.';
}

В данном примере функция my_meta_box_callback() будет выводить текст «This is my meta box content.» в метабоксе.

Как удалить метабокс из экрана?

Для удаления метабокса с экрана необходимо использовать функцию remove_meta_box(). В параметре $id нужно указать идентификатор метабокса, который был задан при его добавлении.

Пример использования:


remove_meta_box( 'my_meta_box', 'post', 'normal' );

В данном примере метабокс с идентификатором ‘my_meta_box’ будет удален с экрана редактирования записей типа «post».

Как изменить порядок отображения метабоксов на экране?

Для изменения порядка отображения метабоксов на экране необходимо использовать функцию reorder_meta_boxes(). В параметре $id нужно указать идентификатор экрана, на котором нужно изменить порядок метабоксов. В параметре $context указывается контекст метабоксов, для которого нужно изменить порядок.

Пример использования:


reorder_meta_boxes( 'post', 'normal' );

В данном примере будет изменен порядок отображения метабоксов в контексте ‘normal’ на экране редактирования записей типа «post».

Функция add_meta_box() позволяет добавлять метабоксы на экраны редактирования записей в WordPress. С помощью параметров функции можно указать на каких экранах отображать метабокс, как вывести его содержимое, как удалить метабокс с экрана и как изменить порядок отображения метабоксов. Это полезный инструмент для разработчиков, позволяющий добавлять дополнительную функциональность к административной части сайта.

Связанные элементы

  • Функция get_post_meta(): возвращает значения метаданных для указанного объекта.
  • Функция update_post_meta(): обновляет значения метаданных для указанного объекта.
  • Функция delete_post_meta(): удаляет значения метаданных для указанного объекта.
  • Функция add_user_meta(): добавляет метаданные для указанного пользователя.
  • Функция get_user_meta(): возвращает значения метаданных для указанного пользователя.
  • Функция update_user_meta(): обновляет значения метаданных для указанного пользователя.
  • Функция delete_user_meta(): удаляет значения метаданных для указанного пользователя.
  • Хук add_meta_boxes: вызывается при добавлении метабоксов на экран.
  • Класс WP_Meta_Query: используется для создания сложных запросов к метаданным.
Обсуждение