Функция do_meta_boxes() в WordPress: использование и примеры

Функция do_meta_boxes() в WordPress

Введение

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

Возврат

Функция возвращает целое число — количество метабоксов, которые были отображены.

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

do_meta_boxes( $screen, $context, $data_object );

Параметры

  • $screen (string | WP_Screen) (обязательный) — идентификатор экрана, на котором вы хотите отобразить метабоксы. Например, если вы создали новый экран с помощью функций add_menu_page() или add_submenu_page(), убедитесь, что ваш идентификатор соответствует ограничениям функции sanitize_key().

  • $context (string) (обязательный) — контекст экрана, в котором будут отображаться метабоксы.

  • $data_object (mixed) (обязательный) — объект, который передается в коллбэк функции метабокса в качестве первого параметра. Чаще всего это объект, связанный с текущим экраном, например, WP_Post или WP_Comment.

Примеры

Пример 1: Регистрация и отображение метабокса

В этом примере показано, как зарегистрировать и отобразить пользовательский метабокс на вашей административной странице.

Регистрация метабокса

// Регистрация метабокса
add_meta_box( 'my-metabox', 'Заголовок метабокса', 'my_metabox_function', 'mymetabox_screen', 'normal' );

// Функция, которая выводит HTML-код метабокса
function my_metabox_function( $data ) {
    echo $data[0] . ' ' . $data[1];
}

Вывод метабоксов

// Вывод всех метабоксов, зарегистрированных ранее, сейчас только один метабокс.
// Этот вызов должен быть вставлен на отдельной странице панели управления
do_meta_boxes( 'mymetabox_screen', 'normal', [ 'my', 'metabox' ] );

В результате на странице, где вызывается функция do_meta_boxes(), мы увидим метабокс с текстом "my metabox".

Примечания

  • Глобальная переменная: $wp_meta_boxes — это массив, который хранит состояние метабоксов.

Изменения

  • В версии 2.5.0 функция была внедрена.

Код do_meta_boxes()

Вот как выглядит реализация функции do_meta_boxes() в WordPress:

function do_meta_boxes( $screen, $context, $data_object ) {
global $wp_meta_boxes;
static $already_sorted = false;

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 );

printf( '
', esc_attr( $context ) ); $sorted = get_user_option( "meta-box-order_$page" ); if ( ! $already_sorted && $sorted ) { foreach ( $sorted as $box_context => $ids ) { foreach ( explode( ',', $ids ) as $id ) { if ( $id && 'dashboard_browser_nag' !== $id ) { add_meta_box( $id, null, null, $screen, $box_context, 'sorted' ); } } } } $already_sorted = true; $i = 0; if ( isset( $wp_meta_boxes[ $page ][ $context ] ) ) { foreach ( array( 'high', 'sorted', 'core', 'default', 'low' ) as $priority ) { if ( isset( $wp_meta_boxes[ $page ][ $context ][ $priority ] ) ) { foreach ( (array) $wp_meta_boxes[ $page ][ $context ][ $priority ] as $box ) { if ( false === $box || ! $box['title'] ) { continue; } // Здесь идет вывод метабокса echo '
' . "n"; echo '
'; echo '

' . $box['title'] . "

n"; echo '
'; echo '
' . "n"; call_user_func( $box['callback'], $data_object, $box ); echo "
n"; echo "
n"; } } } } echo '
'; return $i;

}

Заключение

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

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *