Получить список зарегистрированных метакодов и их удаление

Есть ли функция для получения списка зарегистрированных метабоксов и их удаления? Я вижу, что есть метод для добавления и удаления.

http://codex.wordpress.org/Function_Reference/remove_meta_box

http://codex.wordpress.org/Function_Reference/add_meta_box

7 голосов | спросил Michael Ecklund 21 J0000006Europe/Moscow 2012, 23:39:43

2 ответа


6

Не совсем, но вы можете определить свои собственные. Все мета-поля хранятся в глобальной переменной $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];          
}

В этом массиве будут показаны все мета-поля, зарегистрированные для определенного экрана и конкретного контекста. Вы также можете развернуть еще больше, потому что этот массив также является многомерным массивом, который выделяет мета-поля по приоритету и id.


Итак, скажем, вы хотите получить массив, содержащий все мета-поля, которые имеют «обычный» приоритет на панели управления admin. Вы бы назвали следующее:

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

Это идентично массиву global $wp_meta_boxes['dashboard']['normal'], а также многомерный массив.

Удаление метаданных ядра

Предположим, вы хотите удалить кучу мета-полей. Вышеуказанная функция может быть слегка изменена, чтобы воспользоваться:

function remove_meta_boxes( $screen = null, $context = 'advanced', $priority = 'default', $id ) {
    global $wp_meta_boxes;

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

    $page = $screen->id;

    unset( $wp_meta_boxes[$page][$context][$priority][$id] );
}

Если вы хотите удалить, скажем, виджет входящих ссылок из панели мониторинга, вы должны позвонить:

remove_meta_boxes( 'dashboard', 'normal', 'core', 'dashboard_incoming_links' );
ответил EAMann 22 J0000006Europe/Moscow 2012, 00:42:53
0

На панели инструментов WordPress отображаются мета-поля. Существует нормальный столбец и боковой столбец.

Я могу получить список зарегистрированных мета-ящиков и удалить их из панели управления с помощью следующего кода:

// Remove some non-sense meta boxes
function remove_dashboard_meta_boxes(){
    global $wp_meta_boxes;
    // Dashboard core widgets :: Left Column
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
    // Additional dashboard core widgets :: Right Column
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
    // Remove the welcome panel
    update_user_meta(get_current_user_id(), 'show_welcome_panel', false);
}
add_action('wp_dashboard_setup', 'remove_dashboard_meta_boxes');

Просто используйте print_r($wp_meta_boxes);, чтобы просмотреть список зарегистрированных мета-полей.

ответил Michael Ecklund 27 J0000006Europe/Moscow 2012, 00:42:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132