WordPress Version: 6.5
/**
* Core Post API
*
* @package WordPress
* @subpackage Post
*/
//
// Post Type registration.
//
/**
* Creates the initial post types when 'init' action is fired.
*
* See {@see 'init'}.
*
* @since 2.9.0
*/
function create_initial_post_types()
{
WP_Post_Type::reset_default_labels();
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,
'menu_icon' => 'dashicons-admin-post',
'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,
'menu_icon' => 'dashicons-admin-page',
'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' => __('Add New Media File'), 'edit_item' => __('Edit Media'), 'view_item' => ('1' === get_option('wp_attachment_pages_enabled')) ? __('View Attachment Page') : __('View Media File'), '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,
'menu_icon' => 'dashicons-admin-media',
'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,
'map_meta_cap' => true,
'capability_type' => array('edit_theme_options', 'edit_theme_options'),
'capabilities' => array(
// Meta Capabilities.
'edit_post' => 'edit_post',
'read_post' => 'read_post',
'delete_post' => 'delete_post',
// Primitive Capabilities.
'edit_posts' => 'edit_theme_options',
'edit_others_posts' => 'edit_theme_options',
'delete_posts' => 'edit_theme_options',
'publish_posts' => 'edit_theme_options',
'read_private_posts' => 'edit_theme_options',
'read' => 'read',
'delete_private_posts' => 'edit_theme_options',
'delete_published_posts' => 'edit_theme_options',
'delete_others_posts' => 'edit_theme_options',
'edit_private_posts' => 'edit_theme_options',
'edit_published_posts' => 'edit_theme_options',
),
'show_in_rest' => true,
'rest_base' => 'menu-items',
'rest_controller_class' => 'WP_REST_Menu_Items_Controller',
));
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'), 'add_new' => __('Add New 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_type('user_request', array(
'labels' => array('name' => __('User Requests'), 'singular_name' => __('User Request')),
'public' => false,
'_builtin' => true,
/* internal use only. don't use this when registering your own post type. */
'hierarchical' => false,
'rewrite' => false,
'query_var' => false,
'can_export' => false,
'delete_with_user' => false,
'supports' => array(),
));
register_post_type('wp_block', array(
'labels' => array('name' => _x('Patterns', 'post type general name'), 'singular_name' => _x('Pattern', 'post type singular name'), 'add_new' => __('Add New Pattern'), 'add_new_item' => __('Add New Pattern'), 'new_item' => __('New Pattern'), 'edit_item' => __('Edit Block Pattern'), 'view_item' => __('View Pattern'), 'view_items' => __('View Patterns'), 'all_items' => __('All Patterns'), 'search_items' => __('Search Patterns'), 'not_found' => __('No patterns found.'), 'not_found_in_trash' => __('No patterns found in Trash.'), 'filter_items_list' => __('Filter patterns list'), 'items_list_navigation' => __('Patterns list navigation'), 'items_list' => __('Patterns list'), 'item_published' => __('Pattern published.'), 'item_published_privately' => __('Pattern published privately.'), 'item_reverted_to_draft' => __('Pattern reverted to draft.'), 'item_scheduled' => __('Pattern scheduled.'), 'item_updated' => __('Pattern updated.')),
'public' => false,
'_builtin' => true,
/* internal use only. don't use this when registering your own post type. */
'show_ui' => true,
'show_in_menu' => false,
'rewrite' => false,
'show_in_rest' => true,
'rest_base' => 'blocks',
'rest_controller_class' => 'WP_REST_Blocks_Controller',
'capability_type' => 'block',
'capabilities' => array(
// You need to be able to edit posts, in order to read blocks in their raw form.
'read' => 'edit_posts',
// You need to be able to publish posts, in order to create blocks.
'create_posts' => 'publish_posts',
'edit_posts' => 'edit_posts',
'edit_published_posts' => 'edit_published_posts',
'delete_published_posts' => 'delete_published_posts',
// Enables trashing draft posts as well.
'delete_posts' => 'delete_posts',
'edit_others_posts' => 'edit_others_posts',
'delete_others_posts' => 'delete_others_posts',
),
'map_meta_cap' => true,
'supports' => array('title', 'editor', 'revisions', 'custom-fields'),
));
$template_edit_link = 'site-editor.php?' . build_query(array('postType' => '%s', 'postId' => '%s', 'canvas' => 'edit'));
register_post_type('wp_template', array(
'labels' => array('name' => _x('Templates', 'post type general name'), 'singular_name' => _x('Template', 'post type singular name'), 'add_new' => __('Add New Template'), 'add_new_item' => __('Add New Template'), 'new_item' => __('New Template'), 'edit_item' => __('Edit Template'), 'view_item' => __('View Template'), 'all_items' => __('Templates'), 'search_items' => __('Search Templates'), 'parent_item_colon' => __('Parent Template:'), 'not_found' => __('No templates found.'), 'not_found_in_trash' => __('No templates found in Trash.'), 'archives' => __('Template archives'), 'insert_into_item' => __('Insert into template'), 'uploaded_to_this_item' => __('Uploaded to this template'), 'filter_items_list' => __('Filter templates list'), 'items_list_navigation' => __('Templates list navigation'), 'items_list' => __('Templates list')),
'description' => __('Templates to include in your theme.'),
'public' => false,
'_builtin' => true,
/* internal use only. don't use this when registering your own post type. */
'_edit_link' => $template_edit_link,
/* internal use only. don't use this when registering your own post type. */
'has_archive' => false,
'show_ui' => false,
'show_in_menu' => false,
'show_in_rest' => true,
'rewrite' => false,
'rest_base' => 'templates',
'rest_controller_class' => 'WP_REST_Templates_Controller',
'autosave_rest_controller_class' => 'WP_REST_Template_Autosaves_Controller',
'revisions_rest_controller_class' => 'WP_REST_Template_Revisions_Controller',
'late_route_registration' => true,
'capability_type' => array('template', 'templates'),
'capabilities' => array('create_posts' => 'edit_theme_options', 'delete_posts' => 'edit_theme_options', 'delete_others_posts' => 'edit_theme_options', 'delete_private_posts' => 'edit_theme_options', 'delete_published_posts' => 'edit_theme_options', 'edit_posts' => 'edit_theme_options', 'edit_others_posts' => 'edit_theme_options', 'edit_private_posts' => 'edit_theme_options', 'edit_published_posts' => 'edit_theme_options', 'publish_posts' => 'edit_theme_options', 'read' => 'edit_theme_options', 'read_private_posts' => 'edit_theme_options'),
'map_meta_cap' => true,
'supports' => array('title', 'slug', 'excerpt', 'editor', 'revisions', 'author'),
));
register_post_type('wp_template_part', array(
'labels' => array('name' => _x('Template Parts', 'post type general name'), 'singular_name' => _x('Template Part', 'post type singular name'), 'add_new' => __('Add New Template Part'), 'add_new_item' => __('Add New Template Part'), 'new_item' => __('New Template Part'), 'edit_item' => __('Edit Template Part'), 'view_item' => __('View Template Part'), 'all_items' => __('Template Parts'), 'search_items' => __('Search Template Parts'), 'parent_item_colon' => __('Parent Template Part:'), 'not_found' => __('No template parts found.'), 'not_found_in_trash' => __('No template parts found in Trash.'), 'archives' => __('Template part archives'), 'insert_into_item' => __('Insert into template part'), 'uploaded_to_this_item' => __('Uploaded to this template part'), 'filter_items_list' => __('Filter template parts list'), 'items_list_navigation' => __('Template parts list navigation'), 'items_list' => __('Template parts list')),
'description' => __('Template parts to include in your templates.'),
'public' => false,
'_builtin' => true,
/* internal use only. don't use this when registering your own post type. */
'_edit_link' => $template_edit_link,
/* internal use only. don't use this when registering your own post type. */
'has_archive' => false,
'show_ui' => false,
'show_in_menu' => false,
'show_in_rest' => true,
'rewrite' => false,
'rest_base' => 'template-parts',
'rest_controller_class' => 'WP_REST_Templates_Controller',
'autosave_rest_controller_class' => 'WP_REST_Template_Autosaves_Controller',
'revisions_rest_controller_class' => 'WP_REST_Template_Revisions_Controller',
'late_route_registration' => true,
'map_meta_cap' => true,
'capabilities' => array('create_posts' => 'edit_theme_options', 'delete_posts' => 'edit_theme_options', 'delete_others_posts' => 'edit_theme_options', 'delete_private_posts' => 'edit_theme_options', 'delete_published_posts' => 'edit_theme_options', 'edit_posts' => 'edit_theme_options', 'edit_others_posts' => 'edit_theme_options', 'edit_private_posts' => 'edit_theme_options', 'edit_published_posts' => 'edit_theme_options', 'publish_posts' => 'edit_theme_options', 'read' => 'edit_theme_options', 'read_private_posts' => 'edit_theme_options'),
'supports' => array('title', 'slug', 'excerpt', 'editor', 'revisions', 'author'),
));
register_post_type('wp_global_styles', array(
'label' => _x('Global Styles', 'post type general name'),
'description' => __('Global styles to include in themes.'),
'public' => false,
'_builtin' => true,
/* internal use only. don't use this when registering your own post type. */
'_edit_link' => '/site-editor.php?canvas=edit',
/* internal use only. don't use this when registering your own post type. */
'show_ui' => false,
'show_in_rest' => false,
'rewrite' => false,
'capabilities' => array('read' => 'edit_theme_options', 'create_posts' => 'edit_theme_options', 'edit_posts' => 'edit_theme_options', 'edit_published_posts' => 'edit_theme_options', 'delete_published_posts' => 'edit_theme_options', 'edit_others_posts' => 'edit_theme_options', 'delete_others_posts' => 'edit_theme_options'),
'map_meta_cap' => true,
'supports' => array('title', 'editor', 'revisions'),
));
$navigation_post_edit_link = 'site-editor.php?' . build_query(array('postId' => '%s', 'postType' => 'wp_navigation', 'canvas' => 'edit'));
register_post_type('wp_navigation', array(
'labels' => array('name' => _x('Navigation Menus', 'post type general name'), 'singular_name' => _x('Navigation Menu', 'post type singular name'), 'add_new' => __('Add New Navigation Menu'), 'add_new_item' => __('Add New Navigation Menu'), 'new_item' => __('New Navigation Menu'), 'edit_item' => __('Edit Navigation Menu'), 'view_item' => __('View Navigation Menu'), 'all_items' => __('Navigation Menus'), 'search_items' => __('Search Navigation Menus'), 'parent_item_colon' => __('Parent Navigation Menu:'), 'not_found' => __('No Navigation Menu found.'), 'not_found_in_trash' => __('No Navigation Menu found in Trash.'), 'archives' => __('Navigation Menu archives'), 'insert_into_item' => __('Insert into Navigation Menu'), 'uploaded_to_this_item' => __('Uploaded to this Navigation Menu'), 'filter_items_list' => __('Filter Navigation Menu list'), 'items_list_navigation' => __('Navigation Menus list navigation'), 'items_list' => __('Navigation Menus list')),
'description' => __('Navigation menus that can be inserted into your site.'),
'public' => false,
'_builtin' => true,
/* internal use only. don't use this when registering your own post type. */
'_edit_link' => $navigation_post_edit_link,
/* internal use only. don't use this when registering your own post type. */
'has_archive' => false,
'show_ui' => true,
'show_in_menu' => false,
'show_in_admin_bar' => false,
'show_in_rest' => true,
'rewrite' => false,
'map_meta_cap' => true,
'capabilities' => array('edit_others_posts' => 'edit_theme_options', 'delete_posts' => 'edit_theme_options', 'publish_posts' => 'edit_theme_options', 'create_posts' => 'edit_theme_options', 'read_private_posts' => 'edit_theme_options', 'delete_private_posts' => 'edit_theme_options', 'delete_published_posts' => 'edit_theme_options', 'delete_others_posts' => 'edit_theme_options', 'edit_private_posts' => 'edit_theme_options', 'edit_published_posts' => 'edit_theme_options', 'edit_posts' => 'edit_theme_options'),
'rest_base' => 'navigation',
'rest_controller_class' => 'WP_REST_Posts_Controller',
'supports' => array('title', 'editor', 'revisions'),
));
register_post_type('wp_font_family', array(
'labels' => array('name' => __('Font Families'), 'singular_name' => __('Font Family')),
'public' => false,
'_builtin' => true,
/* internal use only. don't use this when registering your own post type. */
'hierarchical' => false,
'capabilities' => array('read' => 'edit_theme_options', 'read_private_posts' => 'edit_theme_options', 'create_posts' => 'edit_theme_options', 'publish_posts' => 'edit_theme_options', 'edit_posts' => 'edit_theme_options', 'edit_others_posts' => 'edit_theme_options', 'edit_published_posts' => 'edit_theme_options', 'delete_posts' => 'edit_theme_options', 'delete_others_posts' => 'edit_theme_options', 'delete_published_posts' => 'edit_theme_options'),
'map_meta_cap' => true,
'query_var' => false,
'rewrite' => false,
'show_in_rest' => true,
'rest_base' => 'font-families',
'rest_controller_class' => 'WP_REST_Font_Families_Controller',
// Disable autosave endpoints for font families.
'autosave_rest_controller_class' => 'stdClass',
));
register_post_type('wp_font_face', array(
'labels' => array('name' => __('Font Faces'), 'singular_name' => __('Font Face')),
'public' => false,
'_builtin' => true,
/* internal use only. don't use this when registering your own post type. */
'hierarchical' => false,
'capabilities' => array('read' => 'edit_theme_options', 'read_private_posts' => 'edit_theme_options', 'create_posts' => 'edit_theme_options', 'publish_posts' => 'edit_theme_options', 'edit_posts' => 'edit_theme_options', 'edit_others_posts' => 'edit_theme_options', 'edit_published_posts' => 'edit_theme_options', 'delete_posts' => 'edit_theme_options', 'delete_others_posts' => 'edit_theme_options', 'delete_published_posts' => 'edit_theme_options'),
'map_meta_cap' => true,
'query_var' => false,
'rewrite' => false,
'show_in_rest' => true,
'rest_base' => 'font-families/(?P<font_family_id>[\d]+)/font-faces',
'rest_controller_class' => 'WP_REST_Font_Faces_Controller',
// Disable autosave endpoints for font faces.
'autosave_rest_controller_class' => 'stdClass',
));
register_post_status('publish', array(
'label' => _x('Published', 'post status'),
'public' => true,
'_builtin' => true,
/* internal use only. */
/* translators: %s: Number of published posts. */
'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. */
/* translators: %s: Number of scheduled posts. */
'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. */
/* translators: %s: Number of draft posts. */
'label_count' => _n_noop('Draft <span class="count">(%s)</span>', 'Drafts <span class="count">(%s)</span>'),
'date_floating' => true,
));
register_post_status('pending', array(
'label' => _x('Pending', 'post status'),
'protected' => true,
'_builtin' => true,
/* internal use only. */
/* translators: %s: Number of pending posts. */
'label_count' => _n_noop('Pending <span class="count">(%s)</span>', 'Pending <span class="count">(%s)</span>'),
'date_floating' => true,
));
register_post_status('private', array(
'label' => _x('Private', 'post status'),
'private' => true,
'_builtin' => true,
/* internal use only. */
/* translators: %s: Number of private posts. */
'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. */
/* translators: %s: Number of trashed posts. */
'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. */
'date_floating' => true,
));
register_post_status('inherit', array(
'label' => 'inherit',
'internal' => true,
'_builtin' => true,
/* internal use only. */
'exclude_from_search' => false,
));
register_post_status('request-pending', array(
'label' => _x('Pending', 'request status'),
'internal' => true,
'_builtin' => true,
/* internal use only. */
/* translators: %s: Number of pending requests. */
'label_count' => _n_noop('Pending <span class="count">(%s)</span>', 'Pending <span class="count">(%s)</span>'),
'exclude_from_search' => false,
));
register_post_status('request-confirmed', array(
'label' => _x('Confirmed', 'request status'),
'internal' => true,
'_builtin' => true,
/* internal use only. */
/* translators: %s: Number of confirmed requests. */
'label_count' => _n_noop('Confirmed <span class="count">(%s)</span>', 'Confirmed <span class="count">(%s)</span>'),
'exclude_from_search' => false,
));
register_post_status('request-failed', array(
'label' => _x('Failed', 'request status'),
'internal' => true,
'_builtin' => true,
/* internal use only. */
/* translators: %s: Number of failed requests. */
'label_count' => _n_noop('Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>'),
'exclude_from_search' => false,
));
register_post_status('request-completed', array(
'label' => _x('Completed', 'request status'),
'internal' => true,
'_builtin' => true,
/* internal use only. */
/* translators: %s: Number of completed requests. */
'label_count' => _n_noop('Completed <span class="count">(%s)</span>', 'Completed <span class="count">(%s)</span>'),
'exclude_from_search' => false,
));
}