Функция remove_post_type_support()
используется для удаления поддержки определённых возможностей (features) у указанного типа записи (post type). Это позволяет гибко настраивать редактор записи, убирая ненужные поля и элементы интерфейса.
remove_post_type_support( string $post_type, string $feature )
Каждая возможность (feature) связана с определенной областью редактирования записи, например, метабоксами, такими как «Редактор содержимого» или «Миниатюра записи». Также, определенные возможности могут влиять на поведение записи, как, например, возможность «ревизий», которая управляет хранением версий записи. Функция должна быть вызвана в контексте действия init
, чтобы гарантировать, что все типы записей уже зарегистрированы.
Параметры
$post_type
(обязательный, тип: строка) — Название типа записи, у которого требуется удалить возможность.$feature
(обязательный, тип: строка) — Название возможности, которую нужно удалить.
Возможные значения параметра $feature
'title'
— Заголовок записи.'editor'
— Редактор содержимого.'author'
— Выбор автора.'thumbnail'
— Миниатюра (если тема поддерживает миниатюры).'excerpt'
— Цитата (выдержка).'trackbacks'
— Уведомления.'custom-fields'
— Произвольные поля.'comments'
— Комментарии (и счетчик комментариев на экране редактирования).'revisions'
— Ревизии (история изменений).'page-attributes'
— Атрибуты страницы (шаблон, порядок).'post-formats'
— Форматы записи.
Пример 1: Удаление поддержки цитат для пользовательского типа записи
В этом примере мы удалим метабокс для цитат (выдержек) у кастомного типа записи с названием product
:
add_action( 'init', 'remove_excerpt_support_for_product' );
function remove_excerpt_support_for_product() {
remove_post_type_support( 'product', 'excerpt' );
}
Этот код отключает поддержку цитат на странице редактирования всех записей типа product
.
Пример 2: Удаление поддержки форматов записей у стандартного типа post
Допустим, вам нужно отключить поддержку форматов записей (post formats) для обычных постов:
add_action( 'init', 'disable_post_formats_for_posts', 10 );
function disable_post_formats_for_posts() {
remove_post_type_support( 'post', 'post-formats' );
}
Теперь пользователи не смогут выбирать формат записи при создании нового поста.
Пример 3: Отключение комментариев для всех страниц
Чтобы полностью отключить возможность добавления комментариев для всех страниц (post type page
), используйте следующий код:
add_action( 'init', 'remove_comments_for_pages' );
function remove_comments_for_pages() {
remove_post_type_support( 'page', 'comments' );
}
Этот код не только уберет поле для комментариев, но и скроет индикатор количества комментариев на экране редактирования страниц.
Пример 4: Удаление редактора для страниц с конкретным шаблоном
В этом примере редактор контента будет удалён только для страниц, использующих определённый шаблон, например, page-custom-template.php
:
add_action( 'init', 'remove_editor_for_custom_template' );
function remove_editor_for_custom_template() {
if ( ! is_admin() ) {
return;
}
$post_id = filter_input( INPUT_GET, 'post', FILTER_SANITIZE_NUMBER_INT )
?? filter_input( INPUT_POST, 'post_ID', FILTER_SANITIZE_NUMBER_INT );
if ( ! isset( $post_id ) ) {
return;
}
$template_file = get_post_meta( $post_id, '_wp_page_template', true );
if ( 'page-custom-template.php' === $template_file ) {
remove_post_type_support( 'page', 'editor' );
}
}
Этот код проверяет шаблон страницы и отключает редактор только для страниц, использующих определённый шаблон.
Заключение
Функция remove_post_type_support()
— это мощный инструмент для тонкой настройки интерфейса редактирования записей в WordPress. С её помощью можно убрать ненужные элементы интерфейса, такие как редактор содержимого, комментарии, цитаты и многое другое, что позволяет упростить процесс создания контента для пользователей, делая его более интуитивным и понятным.