add_post_type_support()WP 3.0.0

Добавляет доп. возможности для указанного типа записи. Например, метабоксы - блоки на странице редактирования записи: редактор, автор, произвольные поля, комментарии и т.д.

Значение revisions добавляет функцию ревизий для типа записи, а значение comments указывает на показ количества комментариев записи на странице админ-панели: список записей.

Обычно поддерживаемые метабоксы записи указываются при регистрации нового типа записи в функции register_post_type( 'supports' => [ 'title', 'editor' ] ). Эта функция нужна чтобы добавить дополнительные поддерживаемые метабоксы налету.

Рекомендуется использовать функцию на событии init.

Функция должна вызываться после того, как тип записи зарегистрирован. Потому что она работает с глобальной переменной $_wp_post_type_features, в которой тип записи уже должен существовать.

Основа для: create_initial_post_types()
1 раз — 0.000021 сек (очень быстро) | 50000 раз — 0.05 сек (скорость света)

Хуков нет.

Возвращает

null.

Использование

add_post_type_support( $post_type, $feature, ...$args );
$post_type(строка) (обязательный)
Тип поста.
$feature(строка/массив) (обязательный)

Возможность которую нужно добавить. Возможные параметры:

  • title - блок заголовка;
  • editor - блок для ввода контента;
  • author - блог выбора автора;
  • thumbnail - блок выбора миниатюры записи;
  • excerpt - блок ввода цитаты;
  • trackbacks - блок уведомлений;
  • custom-fields - блок установки произвольных полей;
  • comments - блок комментариев;
  • revisions - блок ревизий;
  • page-attributes - блок атрибутов постоянных страниц (шаблон и древовидная связь записей, древовидность должна быть включена). Может быть использовано вместо.
  • post-formats – блок форматов записи, если они включены в теме.
...$args(разное)
Дополнительные аргументы, которые будут переданы в указанную в $feature возможность. Имеет смысл только когда в $feature указана одна возможность (строка).

Примеры

1

#1 Примеры добавления разных возможностей

add_post_type_support( 'my_post_type', 'comments' );
add_post_type_support( 'my_post_type', [
	'author', 'excerpt',
] );
add_post_type_support( 'my_post_type', 'my_feature', [
	'field' => 'value',
] );
0

#2 Поддержка цитат у постоянных страниц (page)

Этот пример показывает, как добавить метабокс цитата к постоянным страницам (к типу записи page). Такой блок, например, есть у постов (записей), но нет у постоянных страниц страниц. Добавьте такой код в functions.php:

add_action( 'init', 'my_custom_init' );
function my_custom_init(){
	add_post_type_support( 'page', 'excerpt' );
}
0

#3 Добавление дополнительных метаполей к уже зарегистрированному типу записи

Допустим у нас есть тип записи book и к нему нужно добавить метаполе "произвольные поля", но только для администратора. Т.е. чтобы авторы эти поля не видели. Делается это таким кодом:

add_action( 'init', 'true_metaboxes_to_game' );
function true_metaboxes_to_game(){

	if( ! current_user_can('manage_options') )
		return;

	add_post_type_support( 'book', ['custom-fields'] );
}

Заметки

  • Global. Массив. $_wp_post_type_features

Список изменений

С версии 3.0.0 Введена.
С версии 5.3.0 Formalized the existing and already documented ...$args parameter by adding it to the function signature.

Код add_post_type_support() WP 6.4.3

function add_post_type_support( $post_type, $feature, ...$args ) {
	global $_wp_post_type_features;

	$features = (array) $feature;
	foreach ( $features as $feature ) {
		if ( $args ) {
			$_wp_post_type_features[ $post_type ][ $feature ] = $args;
		} else {
			$_wp_post_type_features[ $post_type ][ $feature ] = true;
		}
	}
}