remove_meta_box()
Удаляет Блоки на страницах редактирования/создания постов, постоянных страниц и произвольных типов записей.
Вызывать функцию нужно после того как метабоксы добавлены. Добавляются метабоксы обычно на хуке add_meta_boxes. До хука add_meta_boxes зарегистрированы только метабоксы самого WordPress, на этом хуке регистрируются кастомные метабоксы.
Хуков нет.
Возвращает
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_boxes Global meta box state.
Список изменений
С версии 2.6.0 | Введена. |
С версии 4.4.0 | The $screen parameter now accepts an array of screen IDs. |