WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

remove_meta_box()WP 2.6.0

Удаляет Блоки на страницах редактирования/создания постов, постоянных страниц и произвольных типов записей.

Вызывать функцию нужно после того как метабоксы добавлены. Добавляются метабоксы обычно на хуке 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.

Примеры

0

#1 Удаление метабокса

Пример удаления Блока произвольных полей на странице редактирования постов:

add_action( 'add_meta_boxes' , 'remove_post_custom_fields', 99 );
function remove_post_custom_fields(){
	remove_meta_box( 'postcustom' , 'post' , 'normal' );
}
0

#2 Удаление "цитаты"

Пример удаления Блока "Цитата" со страниц редактирования "постоянных страниц":

add_action( 'add_meta_boxes' , 'remove_page_excerpt_field', 99 );
function remove_page_excerpt_field() {
	remove_meta_box( 'postexcerpt' , 'page' , 'normal' );
}
0

#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
}
0

#4 Удаление произвольных таксономий

Если нужно удалить Блок произвольной таксономии (созданный пользователем), на странице редактирования произвольного типа записи, то используйте подобный код:

add_action( 'add_meta_boxes' , 'remove_custom_taxonomy', 99 );
function remove_custom_taxonomy(){
	remove_meta_box( 'tagsdiv-custom_taxonomy_slug', 'название_типа_поста', 'side' );
}
0

#5 Так можно удалить даже Блок публикации:

add_action( 'add_meta_boxes' , 'remove_publish_box', 99 );
function remove_publish_box(){
	remove_meta_box( 'submitdiv', 'custom_post_slug', 'side' );
}
0

#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

Список изменений

С версии 2.6.0 Введена.
С версии 4.4.0 The $screen parameter now accepts an array of screen IDs.

Код remove_meta_box() WP 6.4.3

function remove_meta_box( $id, $screen, $context ) {
	global $wp_meta_boxes;

	if ( empty( $screen ) ) {
		$screen = get_current_screen();
	} elseif ( is_string( $screen ) ) {
		$screen = convert_to_screen( $screen );
	} elseif ( is_array( $screen ) ) {
		foreach ( $screen as $single_screen ) {
			remove_meta_box( $id, $single_screen, $context );
		}
	}

	if ( ! isset( $screen->id ) ) {
		return;
	}

	$page = $screen->id;

	if ( ! isset( $wp_meta_boxes ) ) {
		$wp_meta_boxes = array();
	}
	if ( ! isset( $wp_meta_boxes[ $page ] ) ) {
		$wp_meta_boxes[ $page ] = array();
	}
	if ( ! isset( $wp_meta_boxes[ $page ][ $context ] ) ) {
		$wp_meta_boxes[ $page ][ $context ] = array();
	}

	foreach ( array( 'high', 'core', 'default', 'low' ) as $priority ) {
		$wp_meta_boxes[ $page ][ $context ][ $priority ][ $id ] = false;
	}
}
2 комментария
    Войти