Есть ли функция для получения списка зарегистрированных мета-боксов и их удаления? Я вижу, что есть метод для добавления и удаления.
http://codex.wordpress.org/Function_Reference/remove_meta_box
Есть ли функция для получения списка зарегистрированных мета-боксов и их удаления? Я вижу, что есть метод для добавления и удаления.
http://codex.wordpress.org/Function_Reference/remove_meta_box
Ответы:
Не совсем, но вы можете определить свой собственный. Все мета-блоки хранятся в глобальной переменной, $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' );
Это идентично глобальному массиву, $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] );
}
Если вы хотите удалить, скажем, виджет входящих ссылок из Dashboard, вам нужно позвонить:
remove_meta_boxes( 'dashboard', 'normal', 'core', 'dashboard_incoming_links' );
global
не работает для меня! Спасибо. wordpress.stackexchange.com/questions/318834/…
На панели управления 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);
чтобы увидеть список зарегистрированных мета-блоков.
print_r($wp_meta_boxes);