https://wp-kama.ru/function/register_post_type
Тип записи должен создаваться в момент хука-события
init
. Он не будет создан, если прикрепить функцию доinit
и может работать неправильно, если использовать после.
В качестве названия для нового типа записи нужно указывать уникальное имя, отличное от уже имеющихся таксономий, типов записей и зарезервированных WordPress публичных и частных переменных.
Важно: после создания нового типа записи. Обязательно нужно зайти на страницу
Настройки → Постоянные ссылки
. Нужно это для того, чтобы правила ЧПУ были пересозданы и туда были добавлены правила нового типа записи.
/**
* Регистрирует тип записей
*
*/
function register_post_types(){
register_post_type('post_type_name', array(
'label' => null,
'labels' => array(
'name' => '', // основное название для типа записи, обычно во множественном числе.
'singular_name' => '', // название для одной записи этого типа.
'add_new' => '', // текст для добавления новой записи, как "добавить новый" у постов в админ-панели.
// Если нужно использовать перевод названия, вписывайте подобным образом: _x('Add New', 'product');
'add_new_item' => '', // текст заголовка у вновь создаваемой записи в админ-панели. Как "Добавить новый пост" у постов.
'edit_item' => '', // текст для редактирования типа записи. По умолчанию: редактировать пост/редактировать страницу.
'new_item' => '', // текст новой записи. По умолчанию: "Новый пост"
'view_item' => '', // текст для просмотра записи этого типа. По умолчанию: "Посмотреть пост"/"Посмотреть страницу".
'search_items' => '', // текст для поиска по этим типам записи. По умолчанию "Найти пост"/"найти страницу".
'not_found' => '', // текст, если в результате поиска ничего не было найдено.
// По умолчанию: "Постов не было найдено"/"Страниц не было найдено".
'not_found_in_trash' => '', // текст, если не было найдено в корзине. По умолчанию "Постов не было найдено в корзине"/"Страниц
// не было найдено в корзине".
'parent_item_colon' => '', // текст для родительских типов. Этот параметр не используется для не древовидных типов записей.
// По умолчанию "Родительская страница".
'all_items' => '', // Все записи. По умолчанию равен menu_name
'archives' => '', // Архивы записей. По умолчанию равен all_items
'insert_into_item' => '', // Вставить в запись
'uploaded_to_this_item' => '', // Загружено для этой записи
'featured_image' => '', // Миниатюра записи
'set_featured_image' => '', // Установить миниатюру записи
'remove_featured_image' => '', // Удалить миниатюру записи
'use_featured_image' => '', // Использовать как миниатюру записи
'filter_items_list' => '', // Фильтровать список записей
'items_list_navigation' => '', // Навигация по записям
'items_list' => '', // Список записей
'menu_name' => '', // Название меню. По умолчанию равен name.
'name_admin_bar' => '', // Название в админ баре (тулбаре). По умолчанию равен singular_name.
'view_items' => '', // Название в тулбаре, для страницы архива типа записей. По умолчанию: «View Posts» / «View Pages». С WP 4.7.
'attributes' => '', // Название для метабокса атрибутов записи (у страниц это метабокс «Свойства страницы» - «Page Attributes»).
// По умолчанию: «Post Attributes» или «Page Attributes». С WP 4.7.
'item_updated' => '', // Текст заметки в редакторе записи при обновлении записи. С WP 5.0.
// По умолчанию: «Post updated.» / «Page updated.»
'item_published' => '', // Текст заметки в редакторе записи при публикации записи. С WP 5.0.
// По умолчанию: «Post published.» / «Page published.»
'item_published_privately' => '', // Текст заметки в редакторе записи при публикации private записи. С WP 5.0.
// По умолчанию: «Post published privately.» / «Page published
'item_reverted_to_draft' => '', // Текст заметки в редакторе записи при возврате записи в draft. С WP 5.0.
// По умолчанию: «Post reverted to draft.» / «Page reverted to
'item_scheduled' => '', // Текст заметки в редакторе записи при запланированной публикации на будущую дату. С WP 5.0.
// По умолчанию: «Post scheduled.» / «Page scheduled.»
),
'description' => '',
'public' => true,
// 'publicly_queryable' => null, // зависит от public
// 'exclude_from_search' => null, // зависит от public
// 'show_ui' => null, // зависит от public
// 'show_in_nav_menus' => null, // зависит от public
'show_in_menu' => null, // показывать ли в меню адмнки
// 'show_in_admin_bar' => null, // зависит от show_in_menu
'show_in_rest' => null, // добавить в REST API. C WP 4.7
'rest_base' => null, // $post_type. C WP 4.7
'menu_position' => null,
'menu_icon' => null,
//'capability_type' => 'post',
//'capabilities' => 'post', // массив дополнительных прав для этого типа записи
//'map_meta_cap' => null, // Ставим true чтобы включить дефолтный обработчик специальных прав
'hierarchical' => false,
'supports' => [ 'title', 'editor' ], // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats'
'taxonomies' => [],
'has_archive' => false,
'rewrite' => true,
'query_var' => true,
) );
}
add_action( 'init', 'register_post_types' );
/**
* Меняет плейсхолдер заголовка записи
*
* @param $text
* @param $post
*
* @return string
*
*/
function answer_enter_title_here( $text, $post ) {
if ( $post->post_type === 'answer' ) {
$text = 'Введите вопрос';
}
return $text;
}
add_filter( 'enter_title_here', 'answer_enter_title_here', 10, 2 );
/**
* Регистирует таксономию
*
*/
function create_taxonomy(){
register_taxonomy( 'taxonomy', [ 'post' ], [
'label' => '', // определяется параметром $labels->name
'labels' => [
'name' => 'Genres',
'singular_name' => 'Genre',
'search_items' => 'Search Genres',
'all_items' => 'All Genres',
'view_item ' => 'View Genre',
'parent_item' => 'Parent Genre',
'parent_item_colon' => 'Parent Genre:',
'edit_item' => 'Edit Genre',
'update_item' => 'Update Genre',
'add_new_item' => 'Add New Genre',
'new_item_name' => 'New Genre Name',
'menu_name' => 'Genre',
],
'description' => '', // описание таксономии
'public' => true,
// 'publicly_queryable' => null, // равен аргументу public
// 'show_in_nav_menus' => true, // равен аргументу public
// 'show_ui' => true, // равен аргументу public
// 'show_in_menu' => true, // равен аргументу show_ui
// 'show_tagcloud' => true, // равен аргументу show_ui
// 'show_in_quick_edit' => null, // равен аргументу show_ui
'hierarchical' => false,
'rewrite' => true,
//'query_var' => $taxonomy, // название параметра запроса
'capabilities' => array(),
'meta_box_cb' => null, // html метабокса. callback: `post_categories_meta_box` или `post_tags_meta_box`. false — метабокс отключен.
'show_admin_column' => false, // авто-создание колонки таксы в таблице ассоциированного типа записи. (с версии 3.5)
'show_in_rest' => null, // добавить в REST API
'rest_base' => null, // $taxonomy
// '_builtin' => false,
//'update_count_callback' => '_update_post_term_count',
] );
}
add_action( 'init', 'create_taxonomy' );