remove_meta_box()
Удаляет метабоксы (дополнительные блоки в админке) на странице редактирования постов, постоянных страниц и произвольных типов записей.
Вызывать функцию нужно после того как метабоксы добавлены. Добавляются метабоксы обычно на хуке add_meta_boxes. До хука add_meta_boxes зарегистрированы только метабоксы самого WordPress, на этом хуке регистрируются кастомные метабоксы.
Метабоксы добавляются функций add_meta_box().
Хуков нет.
Возвращает
null. Ничего не возвращает.
Использование
remove_meta_box( $id, $screen, $context );
- $id(строка) (обязательный)
id атрибут HTML тега, контейнера Блока. Базовые Блоки WordPress имеют следующие id:
authordiv- блок установки автора;categorydiv- категории;tagsdiv-post_tag- метки;commentstatusdiv- блок статуса комментирования;commentsdiv- блок комментариев;formatdiv- форматы записей;pageparentdiv- атрибуты постоянных страниц;postcustom- блок произвольных полей;postexcerpt- блок цитаты;postimagediv- блок картинки к посту;revisionsdiv- блок ревизий;slugdiv- блок альтернативного названия статьи (slug);trackbacksdiv- блок уведомлений;- ...
- $screen(строка/массив/WP_Screen) (обязательный)
Название экрана, на котором удаляется блок. Смотрите get_current_screen(). Например может быть:
- Для типов записей:
post,page,link,attachmentилиcustom_post_type - Или для других страниц админки:
link,comment. - Можно указать несколько типов в массиве:
array('post', 'page'). C версии 4.4. null- будет удаляться на любом экране (на текущем экране).
- Для типов записей:
- $context(строка) (обязательный)
- Место где Блок выводится. Может быть:
normal,advanced,side.
Примеры
#1 Удаление метабокса
Пример удаления Блока произвольных полей на странице редактирования постов:
add_action( 'add_meta_boxes' , 'remove_post_custom_fields', 99 );
function remove_post_custom_fields(){
remove_meta_box( 'postcustom' , 'post' , 'normal' );
} #2 Удаление "цитаты"
Пример удаления Блока "Цитата" со страниц редактирования "постоянных страниц":
add_action( 'add_meta_boxes' , 'remove_page_excerpt_field', 99 );
function remove_page_excerpt_field() {
remove_meta_box( 'postexcerpt' , 'page' , 'normal' );
} #3 Удаление комментариев
Этот пример, удаляет Блоки "Комментарии", "Автор" и "Статус Комментария" со со стариц редактирования "постоянных страниц":
add_action( 'add_meta_boxes' , 'remove_page_fields', 99 );
function remove_page_fields() {
remove_meta_box( 'commentstatusdiv', 'page' , 'normal' ); // removes comments status
remove_meta_box( 'commentsdiv', 'page' , 'normal' ); // removes comments
remove_meta_box( 'authordiv', 'page' , 'normal' ); // removes author
} #4 Удаление произвольных таксономий
Если нужно удалить Блок произвольной таксономии (созданный пользователем), на странице редактирования произвольного типа записи, то используйте подобный код:
add_action( 'add_meta_boxes' , 'remove_custom_taxonomy', 99 );
function remove_custom_taxonomy(){
remove_meta_box( 'tagsdiv-custom_taxonomy_slug', 'название_типа_поста', 'side' );
} #5 Так можно удалить даже Блок публикации:
add_action( 'add_meta_boxes' , 'remove_publish_box', 99 );
function remove_publish_box(){
remove_meta_box( 'submitdiv', 'custom_post_slug', 'side' );
} #6 Удалим метаблок 'commentsdiv' если тип поста не поддерживает 'comments'.
В WordPress этот метабокс появляется в случаях, когда тип поста поддерживает 'comments' или если у поста есть комментарии или если комментарии открыты. А если для типа записи не указана поддержка 'comments', то метабокс все равно появляется и автор поста может редактировать комментарии. Иногда это не нужно и в этих случаях метабокс комментариев записи 'commentsdiv', можно удалить так:
// удалим метаблок 'commentsdiv' если тип поста не поддерживает 'comments'.
// странно что в WP это не так сделано!
//do_action( 'add_meta_boxes', $post_type, $post );
add_action( 'add_meta_boxes', function( $post_type ) {
if( ! post_type_supports( $post_type, 'comments' ) )
remove_meta_box( 'commentsdiv', $post_type, 'normal' ); //removes comments
} );
Заметки
- Global. Массив.
$wp_meta_boxesGlobal meta box state.
Список изменений
| С версии 2.6.0 | Введена. |
| С версии 4.4.0 | The $screen parameter now accepts an array of screen IDs. |