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'). З версії 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.0The $screen parameter now accepts an array of screen IDs.

Код remove_meta_box() WP 6.0.2

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;
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *