add_post_type_support()
Добавляет доп. возможности для указанного типа записи. Например, метабоксы - блоки на странице редактирования записи: редактор, автор, произвольные поля, комментарии и т.д.
Значение revisions
добавляет функцию ревизий для типа записи, а значение comments
указывает на показ количества комментариев записи на странице админ-панели: список записей.
Обычно поддерживаемые метабоксы записи указываются при регистрации нового типа записи в функции register_post_type( 'supports' => [ 'title', 'editor' ] )
. Эта функция нужна чтобы добавить дополнительные поддерживаемые метабоксы налету.
Рекомендуется использовать функцию на событии init.
Функция должна вызываться после того, как тип записи зарегистрирован. Потому что она работает с глобальной переменной $_wp_post_type_features, в которой тип записи уже должен существовать.
Хуков нет.
Возвращает
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 Примеры добавления разных возможностей
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)
Этот пример показывает, как добавить метабокс цитата к постоянным страницам (к типу записи page
). Такой блок, например, есть у постов (записей), но нет у постоянных страниц страниц. Добавьте такой код в functions.php:
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'] ); }
Заметки
- 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() add post type support WP 6.2.2
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; } } }