add_post_type_support()

Добавляет функциональную возможность (фичу) для определённого типа поста.

Обычно мы добавляем эти возможности при регистрации типа записи в параметре 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 при редактировани страниц, вот так:

Включаем поддержку блока Отрывок функцией add_post_type_support()

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

Конечно, такие вещи обычно лучше указывать при регистрации типа записи сразу, но так как по условию его регистрировали не мы, то тут ничего не поделаешь.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.