отобразить все зарегистрированные мета-боксы

Вопрос или проблема

Я хочу отобразить список всех мета-боксов каждого поста. Глобальная переменная wp_meta_boxes не выводит ничего на экран. Как я могу вывести значение массива, чтобы получить список всех деталей мета-боксов?

<?php
global $wp_meta_boxes;
pr(wp_meta_boxes);
?>

Но экран пуст, ничего не выводит.

Все мета-боксы хранятся в многомерном массиве, называемом $wp_meta_boxes. Он отображает все мета-боксы, зарегистрированные для конкретного экрана и конкретного контекста.

Используйте следующий код:

function get_meta_boxes( $screen = null, $context="advanced" ) {
    global $wp_meta_boxes;

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

    $page = $screen->id;

    return $wp_meta_boxes[$page][$context];          
}

Теперь, если вы хотите получить массив, который содержит все мета-боксы с приоритетом “обычный”, вам нужно использовать следующий код:

$dashboard_boxes = get_meta_boxes( 'dashboard', 'normal' ); 

Ответ или решение

Для того чтобы отобразить список всех зарегистрированных мета-боксов в WordPress, необходимо учитывать, что мета-боксы хранятся в многомерном массиве под названием $wp_meta_boxes. Однако, чтобы корректно вывести информацию о мета-боксах на экран, важно понимать контекст и экран, для которого они зарегистрированы.

Шаги по отображению мета-боксов

  1. Получение текущего экрана: Прежде всего, нужно определить текущий экран, чтобы обратиться к соответствующим мета-боксам. Это можно сделать с помощью функции get_current_screen().

  2. Определение контекста мета-боксов: Значения для контекста могут включать normal, side, или advanced, каждый из которых представляет определенные области страницы редактирования.

  3. Извлечение мета-боксов: Мы можем создать функцию get_meta_boxes(), которая будет принимать в качестве аргументов название экрана и контекст, а затем возвращать мета-боксы для этого экрана.

Пример кода для отображения мета-боксов

function get_meta_boxes($screen = null, $context = 'advanced') {
    global $wp_meta_boxes;

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

    $page = $screen->id;

    if (isset($wp_meta_boxes[$page][$context])) {
        return $wp_meta_boxes[$page][$context];
    }

    return [];
}

// Вывод мета-боксов
function display_meta_boxes() {
    $meta_boxes = get_meta_boxes();

    if (!empty($meta_boxes)) {
        foreach ($meta_boxes as $meta_box) {
            // Здесь можно настроить вывод нужной информации о мета-боксах
            echo '<h3>' . esc_html($meta_box['title']) . '</h3>';
            // Вывод содержимого мета-бокса можно обрабатывать индивидуально
        }
    } else {
        echo 'Нет зарегистрированных мета-боксов для данного экрана.';
    }
}

// Вызов функции для отображения мета-боксов
display_meta_boxes();

Подробное объяснение кода:

  1. Функция get_meta_boxes():

    • Определяет актуальный экран, если он не передан в качестве аргумента.
    • Проверяет, существует ли указанный контекст мета-боксов в глобальной переменной $wp_meta_boxes.
    • Возвращает массив мета-боксов для указанного экрана и контекста.
    • Если мета-боксы отсутствуют, возвращается пустой массив.
  2. Функция display_meta_boxes():

    • Вызывает get_meta_boxes() для получения мета-боксов.
    • Проходит по мета-боксам и выводит их заголовки.
    • Если мета-боксы отсутствуют, выводится сообщение об их отсутствии.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...