Создание произвольного типа постов на wordpress

Дневник разработчика

Для создания произвольного типа постов используется функция register_post_type() — создает новый тип записи или изменяет имеющийся. В качестве названия для нового типа записи используется уникальное имя, которое ранее не использовалось на сайте (таксономии. типы записей. стандартные имена в WordPress ). Вот тут я создал полный список зарезервированных имен, которые используются в WordPress по умолчанию.

Как добавить произвольный тип постов в WordPress

Для создания произвольного типа публикаций на сайте под управлением cms WordPress мы открываем файл с настройками темы functions.php и прописываем там следующий шаблон:

add_action( 'init', 'register_post_types' );
function register_post_types(){
	register_post_type( 'post_type_name', [
		'label'  => null,
		'labels' => [
			'name'               => '____', // основное название для типа записи
			'singular_name'      => '____', // название для одной записи этого типа
			'add_new'            => 'Добавить ____', // для добавления новой записи
			'add_new_item'       => 'Добавление ____', // заголовка у вновь создаваемой записи в админ-панели.
			'edit_item'          => 'Редактирование ____', // для редактирования типа записи
			'new_item'           => 'Новое ____', // текст новой записи
			'view_item'          => 'Смотреть ____', // для просмотра записи этого типа.
			'search_items'       => 'Искать ____', // для поиска по этим типам записи
			'not_found'          => 'Не найдено', // если в результате поиска ничего не было найдено
			'not_found_in_trash' => 'Не найдено в корзине', // если не было найдено в корзине
			'parent_item_colon'  => '', // для родителей (у древовидных типов)
			'menu_name'          => '____', // название меню
		],
		'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,
	] );
}

Этот action цепляется к событию init и регистрирует на сайте новый тип записей согласно заданных в шаблоне параметров.

init это очень популярное хук-событие, которое традиционно используется большинством плагинов, для инициализации и дальнейшей работы. Если я правильно понял, то init срабатывает как только в браузере завершается загрузка самого движка wordpress, после которой грузятся файлы шаблона и прочее. Вот как только сам вордпресс прогрузился. мы и запускаем нашу программу. например регистрируем наш новый тип поста.

все хуки действий выполняются в определенном порядке. Вообще, все хуки выполняются после того, как базовое приложение WordPress завершит свою загрузку.

Init запускается после того, как WordPress закончит свою загрузку, но до того, как будут переданы какие-либо хэдеры. Вообще, этот хук используется плагинами для инициализации процесса их работы.

Юрий Ронин