Функция remove_meta_box()
в WordPress используется для удаления метабоксов (или блоков) с экранов редактирования записей, страниц, комментариев, ссылок и других административных экранов. Эта функция особенно полезна для упрощения интерфейса администратора, когда вы хотите скрыть ненужные или специфические для вашего проекта метабоксы.
remove_meta_box( string $id, string|array|WP_Screen $screen, string $context )
Параметры функции
- $id (string) — ID метабокса, который нужно удалить. Это значение соответствует атрибуту
id
HTML-тега метабокса. Примеры стандартных ID:authordiv
— метабокс выбора автора записи;categorydiv
— метабокс категорий;postimagediv
— метабокс изображения записи.
- $screen (string|array|WP_Screen) — Экран или экраны, на которых будет удален метабокс. Можно указать:
- тип записи (
post
,page
,custom_post_type
); - административные экраны (
link
,comment
); - массив экранов (например,
array('post', 'page')
).
- тип записи (
- $context (string) — Контекст, в котором выводится метабокс. Значения зависят от экрана, например:
normal
— основной блок;side
— боковая колонка;advanced
— дополнительная зона.
Примечания по использованию
Важно вызывать remove_meta_box()
только после того, как метабоксы добавлены на экран. Обычно это происходит на хуке add_meta_boxes
, поскольку на этом этапе WordPress уже загрузил все стандартные метабоксы.
Пример 1: Удаление метабокса произвольных полей с экрана редактирования записей
В этом примере удаляется метабокс произвольных полей на экране редактирования стандартных записей (post
).
add_action( 'add_meta_boxes', 'remove_post_custom_fields', 99 );
function remove_post_custom_fields() {
remove_meta_box( 'postcustom', 'post', 'normal' );
}
Пример 2: Удаление метабокса цитат на страницах
Удаление метабокса цитаты (postexcerpt
) с экрана редактирования постоянных страниц (page
).
add_action( 'add_meta_boxes', 'remove_page_excerpt_field', 99 );
function remove_page_excerpt_field() {
remove_meta_box( 'postexcerpt', 'page', 'normal' );
}
Пример 3: Удаление метабоксов комментариев и автора на страницах
Следующий пример удаляет метабоксы для комментариев, статуса комментариев и автора на экране редактирования постоянных страниц (page
).
add_action( 'add_meta_boxes', 'remove_page_fields', 99 );
function remove_page_fields() {
remove_meta_box( 'commentstatusdiv', 'page', 'normal' ); // статус комментариев
remove_meta_box( 'commentsdiv', 'page', 'normal' ); // блок комментариев
remove_meta_box( 'authordiv', 'page', 'normal' ); // блок выбора автора
}
Пример 4: Удаление метабокса рубрик для произвольного типа записи
В данном примере метабокс категорий (categorydiv
) удаляется с экрана редактирования произвольного типа записи review
.
add_action( 'add_meta_boxes', 'remove_review_category_metabox', 99 );
function remove_review_category_metabox() {
remove_meta_box( 'categorydiv', 'review', 'side' );
}
Пример 5: Удаление метабокса произвольной таксономии
Чтобы удалить метабокс таксономии, зарегистрированной для произвольного типа записи, можно использовать следующий код. Этот пример удаляет метабокс tagsdiv-genre
с экрана редактирования типа записи movie
.
add_action( 'add_meta_boxes', 'remove_genre_metabox', 99 );
function remove_genre_metabox() {
remove_meta_box( 'tagsdiv-genre', 'movie', 'side' );
}
Пример 6: Удаление метабоксов в зависимости от роли пользователя
Этот пример удаляет метабокс комментариев (commentsdiv
) на экране редактирования постов, если пользователь не обладает правами администратора.
if ( is_admin() ) {
add_action( 'admin_menu', 'remove_comment_metabox_for_non_admins' );
}
function remove_comment_metabox_for_non_admins() {
if ( ! current_user_can( 'manage_options' ) ) {
remove_meta_box( 'commentsdiv', 'post', 'normal' );
}
}
Пример 7: Удаление метабокса изображений записи
Этот код удаляет метабокс изображения записи (postimagediv
) с экрана редактирования произвольного типа записи portfolio
.
add_action( 'add_meta_boxes', 'remove_portfolio_image_metabox', 99 );
function remove_portfolio_image_metabox() {
remove_meta_box( 'postimagediv', 'portfolio', 'side' );
}
Заключение
Функция remove_meta_box()
— удобный инструмент для настройки интерфейса администратора WordPress. С ее помощью вы можете управлять отображением метабоксов, оставляя только те, которые действительно нужны для работы. Это повышает удобство и упрощает использование административной панели, особенно при работе с заказчиками и пользователями, которые не должны видеть избыточные блоки на страницах редактирования.