Получить список зарегистрированных метакодов и их удаление
Есть ли функция для получения списка зарегистрированных метабоксов и их удаления? Я вижу, что есть метод для добавления и удаления.
http://codex.wordpress.org/Function_Reference/remove_meta_box
2 ответа
Не совсем, но вы можете определить свои собственные. Все мета-поля хранятся в глобальной переменной $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' );
На панели инструментов 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);
, чтобы просмотреть список зарегистрированных мета-полей.