add_post_type_support()WP 3.0.0

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

Например, добавляет метабоксы на странице редактирования поста: миниатюра поста (thumbnail), комментарии (comments), произвольные поля (custom-fields) и т.д.

Кроме того, функция revisions определяет, будет ли тип записи хранить ревизии. Функция autosave определяет, будет ли тип записи автоматически сохраняться. Функция comments определяет, будет ли количество комментариев отображаться на экране редактирования.

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

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

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

Основа для: 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 функции.

Имеет смысл только когда в $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 7.0

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