Добавляет функциональную возможность (фичу) для определённого типа поста.
Обычно мы добавляем эти возможности при регистрации типа записи в параметре supports.
Плюс, функция должна выполняться после того, как тип записи был зарегистрирован. То есть мы можем добавить её на хук init
, убедившись, что приоритет нашего хука init
меньше (цифра больше), чем хука, на котором висит регистрация CPT (типа записи).
add_post_type_support( $post_type, $feature, ...$args )
Параметры
- $post_type
- (строка) Название уже зарегистрированного типа записи, для которого будет добавляться возможность.
- $feature
- (строка|массив) Одна или несколько фич, которые нужно добавить в поддержку этого типа записи. Может принимать значения:
title
— поле для ввода заголовка постаeditor
— текстовый редакторexcerpt
— метабокс «Цитата»author
— метабокс «Автор»thumbnail
— метабокс «Миниатюра записи» (кроме того, ваша тема должна их поддерживать)comments
— метабокс «Комментарии» (если указано, то разрешены комментарии к постам регистрируемого типа)trackbacks
— метабокс «Отправить обратные ссылки»custom-fields
— метабокс «Произвольные поля» (также добавляет поддержку произвольных полей в сайдбарах Gutenberg)revisions
— метабокс «Редакции» (если указано, то в базе данных будут создаваться редакции постов данного типа)page-attributes
— метабокс «Атрибуты страницы» с возможностью выбора родительского эоемента и установления порядкаmenu_order
post-formats
— метабокс «Формат», про форматы постов читайте подробнее здесь.
- …$args
- Любые дополнительные параметры. Многоточие означает, что параметров может быть любое количество.
Примеры
1. Добавление поддержки Отрывка (Цитата) для Страниц
По умолчанию тип записи Страницы не поддерживают возможность указания для них короткого описания (в админке сейчас называется «Отрывок», раньше называлось «Цитата»).
Так теперь мы можем это добавить функцией!
add_action( 'init', 'true_add_excerpt_to_pages' ); function true_add_excerpt_to_pages() { add_post_type_support( 'page', 'excerpt' ); }
Вы же знаете, куда вставляется этот код? Нет? Тогда читайте.
В итоге блок «Отрывок» появится даже в Gutenberg при редактировани страниц, вот так:
2. Произвольный тип записи
И ещё один пример с произвольным типом записи, зарегистрированным не нами.
Прежположим, что где-то в коде, при помощи плагина например, у вас был зарегистрирован произвольный тип записи game
.
add_action( 'init', 'true_some_cpt_registration', 20 ); function true_some_cpt_registration() { register_post_type( 'game', array( // ... // различные параметры тут // кстати title и editor и так поддерживаются по умолчанию, к слову // так что тут supports вообще можно было не указывать 'supports' => array( 'title', 'editor' ) ) ); }
И тут мы решили, что нам ну необходим метабокс с произвольными полями для данного типа записей. И редакции нам тоже необходимы!
add_action( 'init', 'true_custom_fields_support', 21 ); // обратите внимание, что я использовал приоритет 21 // если указать меньше 20, то не будет работать, потому что тип записи game ещё не зарегистрирован function true_custom_fields_support() { add_post_type_support( 'game', array( 'custom-fields', 'revisions' ) ); }
Конечно, такие вещи обычно лучше указывать при регистрации типа записи сразу, но так как по условию его регистрировали не мы, то тут ничего не поделаешь.