Функция add_post_type_support()
в WordPress используется для добавления поддержки различных функциональных возможностей к пользовательским типам записей. Это позволяет расширить функциональность пользовательских типов записей, добавляя к ним стандартные возможности, такие как поддержка миниатюр, тегов, настроек публикации и др.
add_post_type_support( string $post_type, string|array $supports, ...$args );
Параметры
$post_type
(строка): Идентификатор пользовательского типа записи, к которому добавляется поддержка.$supports
(строка|массив): Один или несколько типов поддержки, которые нужно добавить. Возможные значения:title
— поддержка заголовка.editor
— поддержка редактора контента.author
— поддержка выбора автора.thumbnail
— поддержка миниатюры.excerpt
— поддержка краткого описания.trackbacks
— поддержка трекбэков.custom-fields
— поддержка пользовательских полей.comments
— поддержка комментариев.revisions
— поддержка ревизий.page-attributes
— поддержка атрибутов страницы, таких как шаблоны и древовидная структура.post-formats
— поддержка форматов записей, если они включены в тему.
...$args
(разное): Дополнительные аргументы, которые будут переданы в указанную возможность в$supports
. Это имеет смысл только при указании одной возможности (строка).
Возвращаемое значение
Функция не возвращает значений.
Примечания
- Использование функции: Рекомендуется вызывать
add_post_type_support()
в событииinit
, чтобы гарантировать, что тип записи уже зарегистрирован. Это важно, поскольку функция работает с глобальной переменной$_wp_post_type_features
, в которой тип записи должен существовать. - Расширение возможностей: Функция полезна для добавления дополнительных возможностей к уже зарегистрированным типам записей, которые не были указаны при их регистрации через
register_post_type()
.
Пример 1: Добавление различных возможностей
В этом примере мы добавляем поддержку комментариев и пользовательских полей к пользовательскому типу записи my_post_type
.
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'] );
Пример 2: Поддержка цитат у постоянных страниц
Этот пример демонстрирует, как добавить блок для ввода краткого описания (цитаты) к постоянным страницам (тип записи page
), что обычно доступно для записей, но не для страниц.
add_action( 'init', 'my_custom_init' );
function my_custom_init() {
add_post_type_support( 'page', 'excerpt' );
}
Пример 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'] );
}
Пример 4: Практическое применение
В следующем примере добавляется поддержка миниатюр и настроек публикации к пользовательскому типу записи с идентификатором my_custom_post_type
.
function my_custom_post_type_setup() {
// Регистрируем пользовательский тип записи
register_post_type( 'my_custom_post_type', array(
'labels' => array(
'name' => 'Custom Posts',
'singular_name' => 'Custom Post',
),
'public' => true,
'has_archive' => true,
) );
// Добавляем поддержку миниатюр
add_post_type_support( 'my_custom_post_type', 'thumbnail' );
// Добавляем поддержку атрибутов страницы
add_post_type_support( 'my_custom_post_type', 'page-attributes' );
}
// Хук к инициализации темы
add_action( 'init', 'my_custom_post_type_setup' );
Заключение
Функция add_post_type_support()
предоставляет гибкость для расширения возможностей пользовательских типов записей в WordPress. Используя эту функцию, вы можете легко добавлять поддержу различных метабоксов и функциональных возможностей, которые могут быть необходимы для вашей кастомной структуры контента.