Функция позволяет отключить функциональную возможность (фичу) для определённого типа постов. Противоположна функции add_post_type_support(), которая наоборот подключает её.
Должна использоваться на хуке init
после регистрации типа записи, с которым будем работать.
remove_post_type_support( $post_type, $feature )
Параметры
- $post_type
- (строка) Название типа записей, для которого хотим отключить фичу.
- $feature
- (строка) Фича, которую нужно отключить, может принимать значения:
title
editor
author
thumbnail
excerpt
trackbacks
custom-fields
comments
(также скроет отображение количества комментов в таблицах, где выводятся все записи типа)revisions
(также перестанут сохраняться редакции для этого типа записей)page-attributes
post-formats
Более подробное описание фич можете почитать здесь.
Примеры
1. Отключение неиспользуемых фич
В реальной жизни такое часто пригождалось, когда делаешь сайт для клиента и хочешь настроить админку, чтобы там всё было идеально, а у клиента не возникало странных вопросов из серии «А что это такое – трэкбэки?».
add_action( 'init', 'true_remove_trackbacks_and_author', 10 ); function true_remove_trackbacks_and_author() { remove_post_type_support( 'post', 'trackbacks' ); remove_post_type_support( 'post', 'author' ); }
Все эти истории кстати отлично работают и в Gutenberg. В качестве примера мы же отключали автора в коде выше?
Вот что было до вставки кода (не знаете, куда вставлять?).
А вот что после:
2. Отключаем редактор контента при использовании определённого шаблона страницы
Хочу поделиться с вами довольно интересным кодом, который позволит отключить редактор контента для типа записей Страницы, если у страницы установлен определённый шаблон.
add_action( 'init', 'true_remove_editor_for_template' ); function true_remove_editor_for_template() { // выходим из функции, если не находимся в админке if ( ! is_admin() ) { return; } // получаем ID поста $post_id = ! empty( $_GET[ 'post' ] ) && $_GET[ 'post' ] ? $_GET[ 'post' ] : ( ! empty( $_POST[ 'post_ID' ] ) && $_POST[ 'post_ID' ] ? $_POST[ 'post_ID' ] : null ); // если ID поста не существует, выходим if( ! $post_id ) { return; } // получаем используемый шаблон страницы $template_file = get_post_meta( $post_id, '_wp_page_template', true ); // если он соответстует определённому, отключаем редактор if ( 'page-templates/contact.php' === $template_file ) { remove_post_type_support( 'page', 'editor' ); } }
Для всех интересующихся – очистка $post_id
тут не нужна, потому что мы используем его только в функции get_post_meta(), а она об этом позаботится сама (функцией absint(), кому интересно). Хотя соглашусь безусловно, что в некоторых случаях better safe than sorry.
По факту вот что у меня получилось:
Добавлю также, что у меня был включен Gutenberg для Страниц, и отключение editor
функцией remove_post_type_support()
привело к отключению Gutenberg целиком.