create_initial_post_types()

Creates the initial post types when ‘init’ action is fired.


Description Description

See ‘init’.


Source Source

File: wp-includes/post.php

function create_initial_post_types() {
	register_post_type( 'post', array(
		'labels' => array(
			'name_admin_bar' => _x( 'Post', 'add new from admin bar' ),
		),
		'public'  => true,
		'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
		'_edit_link' => 'post.php?post=%d', /* internal use only. don't use this when registering your own post type. */
		'capability_type' => 'post',
		'map_meta_cap' => true,
		'menu_position' => 5,
		'hierarchical' => false,
		'rewrite' => false,
		'query_var' => false,
		'delete_with_user' => true,
		'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
		'show_in_rest' => true,
		'rest_base' => 'posts',
		'rest_controller_class' => 'WP_REST_Posts_Controller',
	) );

	register_post_type( 'page', array(
		'labels' => array(
			'name_admin_bar' => _x( 'Page', 'add new from admin bar' ),
		),
		'public' => true,
		'publicly_queryable' => false,
		'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
		'_edit_link' => 'post.php?post=%d', /* internal use only. don't use this when registering your own post type. */
		'capability_type' => 'page',
		'map_meta_cap' => true,
		'menu_position' => 20,
		'hierarchical' => true,
		'rewrite' => false,
		'query_var' => false,
		'delete_with_user' => true,
		'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'page-attributes', 'custom-fields', 'comments', 'revisions' ),
		'show_in_rest' => true,
		'rest_base' => 'pages',
		'rest_controller_class' => 'WP_REST_Posts_Controller',
	) );

	register_post_type( 'attachment', array(
		'labels' => array(
			'name' => _x('Media', 'post type general name'),
			'name_admin_bar' => _x( 'Media', 'add new from admin bar' ),
			'add_new' => _x( 'Add New', 'add new media' ),
 			'edit_item' => __( 'Edit Media' ),
 			'view_item' => __( 'View Attachment Page' ),
			'attributes' => __( 'Attachment Attributes' ),
		),
		'public' => true,
		'show_ui' => true,
		'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
		'_edit_link' => 'post.php?post=%d', /* internal use only. don't use this when registering your own post type. */
		'capability_type' => 'post',
		'capabilities' => array(
			'create_posts' => 'upload_files',
		),
		'map_meta_cap' => true,
		'hierarchical' => false,
		'rewrite' => false,
		'query_var' => false,
		'show_in_nav_menus' => false,
		'delete_with_user' => true,
		'supports' => array( 'title', 'author', 'comments' ),
		'show_in_rest' => true,
		'rest_base' => 'media',
		'rest_controller_class' => 'WP_REST_Attachments_Controller',
	) );
	add_post_type_support( 'attachment:audio', 'thumbnail' );
	add_post_type_support( 'attachment:video', 'thumbnail' );

	register_post_type( 'revision', array(
		'labels' => array(
			'name' => __( 'Revisions' ),
			'singular_name' => __( 'Revision' ),
		),
		'public' => false,
		'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
		'_edit_link' => 'revision.php?revision=%d', /* internal use only. don't use this when registering your own post type. */
		'capability_type' => 'post',
		'map_meta_cap' => true,
		'hierarchical' => false,
		'rewrite' => false,
		'query_var' => false,
		'can_export' => false,
		'delete_with_user' => true,
		'supports' => array( 'author' ),
	) );

	register_post_type( 'nav_menu_item', array(
		'labels' => array(
			'name' => __( 'Navigation Menu Items' ),
			'singular_name' => __( 'Navigation Menu Item' ),
		),
		'public' => false,
		'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
		'hierarchical' => false,
		'rewrite' => false,
		'delete_with_user' => false,
		'query_var' => false,
	) );

	register_post_type( 'custom_css', array(
		'labels' => array(
			'name'          => __( 'Custom CSS' ),
			'singular_name' => __( 'Custom CSS' ),
		),
		'public'           => false,
		'hierarchical'     => false,
		'rewrite'          => false,
		'query_var'        => false,
		'delete_with_user' => false,
		'can_export'       => true,
		'_builtin'         => true, /* internal use only. don't use this when registering your own post type. */
		'supports'         => array( 'title', 'revisions' ),
		'capabilities'     => array(
			'delete_posts'           => 'edit_theme_options',
			'delete_post'            => 'edit_theme_options',
			'delete_published_posts' => 'edit_theme_options',
			'delete_private_posts'   => 'edit_theme_options',
			'delete_others_posts'    => 'edit_theme_options',
			'edit_post'              => 'edit_css',
			'edit_posts'             => 'edit_css',
			'edit_others_posts'      => 'edit_css',
			'edit_published_posts'   => 'edit_css',
			'read_post'              => 'read',
			'read_private_posts'     => 'read',
			'publish_posts'          => 'edit_theme_options',
		),
	) );

	register_post_type( 'customize_changeset', array(
		'labels' => array(
			'name'               => _x( 'Changesets', 'post type general name' ),
			'singular_name'      => _x( 'Changeset', 'post type singular name' ),
			'menu_name'          => _x( 'Changesets', 'admin menu' ),
			'name_admin_bar'     => _x( 'Changeset', 'add new on admin bar' ),
			'add_new'            => _x( 'Add New', 'Customize Changeset' ),
			'add_new_item'       => __( 'Add New Changeset' ),
			'new_item'           => __( 'New Changeset' ),
			'edit_item'          => __( 'Edit Changeset' ),
			'view_item'          => __( 'View Changeset' ),
			'all_items'          => __( 'All Changesets' ),
			'search_items'       => __( 'Search Changesets' ),
			'not_found'          => __( 'No changesets found.' ),
			'not_found_in_trash' => __( 'No changesets found in Trash.' ),
		),
		'public' => false,
		'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
		'map_meta_cap' => true,
		'hierarchical' => false,
		'rewrite' => false,
		'query_var' => false,
		'can_export' => false,
		'delete_with_user' => false,
		'supports' => array( 'title', 'author' ),
		'capability_type' => 'customize_changeset',
		'capabilities' => array(
			'create_posts' => 'customize',
			'delete_others_posts' => 'customize',
			'delete_post' => 'customize',
			'delete_posts' => 'customize',
			'delete_private_posts' => 'customize',
			'delete_published_posts' => 'customize',
			'edit_others_posts' => 'customize',
			'edit_post' => 'customize',
			'edit_posts' => 'customize',
			'edit_private_posts' => 'customize',
			'edit_published_posts' => 'do_not_allow',
			'publish_posts' => 'customize',
			'read' => 'read',
			'read_post' => 'customize',
			'read_private_posts' => 'customize',
		),
	) );

	register_post_type( 'oembed_cache', array(
		'labels' => array(
			'name'          => __( 'oEmbed Responses' ),
			'singular_name' => __( 'oEmbed Response' ),
		),
		'public'           => false,
		'hierarchical'     => false,
		'rewrite'          => false,
		'query_var'        => false,
		'delete_with_user' => false,
		'can_export'       => false,
		'_builtin'         => true, /* internal use only. don't use this when registering your own post type. */
		'supports'         => array(),
	) );

	register_post_status( 'publish', array(
		'label'       => _x( 'Published', 'post status' ),
		'public'      => true,
		'_builtin'    => true, /* internal use only. */
		'label_count' => _n_noop( 'Published <span class="count">(%s)</span>', 'Published <span class="count">(%s)</span>' ),
	) );

	register_post_status( 'future', array(
		'label'       => _x( 'Scheduled', 'post status' ),
		'protected'   => true,
		'_builtin'    => true, /* internal use only. */
		'label_count' => _n_noop('Scheduled <span class="count">(%s)</span>', 'Scheduled <span class="count">(%s)</span>' ),
	) );

	register_post_status( 'draft', array(
		'label'       => _x( 'Draft', 'post status' ),
		'protected'   => true,
		'_builtin'    => true, /* internal use only. */
		'label_count' => _n_noop( 'Draft <span class="count">(%s)</span>', 'Drafts <span class="count">(%s)</span>' ),
	) );

	register_post_status( 'pending', array(
		'label'       => _x( 'Pending', 'post status' ),
		'protected'   => true,
		'_builtin'    => true, /* internal use only. */
		'label_count' => _n_noop( 'Pending <span class="count">(%s)</span>', 'Pending <span class="count">(%s)</span>' ),
	) );

	register_post_status( 'private', array(
		'label'       => _x( 'Private', 'post status' ),
		'private'     => true,
		'_builtin'    => true, /* internal use only. */
		'label_count' => _n_noop( 'Private <span class="count">(%s)</span>', 'Private <span class="count">(%s)</span>' ),
	) );

	register_post_status( 'trash', array(
		'label'       => _x( 'Trash', 'post status' ),
		'internal'    => true,
		'_builtin'    => true, /* internal use only. */
		'label_count' => _n_noop( 'Trash <span class="count">(%s)</span>', 'Trash <span class="count">(%s)</span>' ),
		'show_in_admin_status_list' => true,
	) );

	register_post_status( 'auto-draft', array(
		'label'    => 'auto-draft',
		'internal' => true,
		'_builtin' => true, /* internal use only. */
	) );

	register_post_status( 'inherit', array(
		'label'    => 'inherit',
		'internal' => true,
		'_builtin' => true, /* internal use only. */
		'exclude_from_search' => false,
	) );
}

Top ↑

Changelog Changelog

Changelog
Version Description
2.9.0 Introduced.


Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.