get_post_type_labels

The timeline below displays how wordpress function get_post_type_labels has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.4

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Label for adding a new item. Default is 'Add New Post' / 'Add New Page'.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the Trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the featured image meta box title. Default is 'Featured image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `filter_by_date` - Label for the date filter in list tables. Default is 'Filter by date'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 * - `item_published` - Label used when an item is published. Default is 'Post published.' / 'Page published.'
 * - `item_published_privately` - Label used when an item is published with private visibility.
 *                              Default is 'Post published privately.' / 'Page published privately.'
 * - `item_reverted_to_draft` - Label used when an item is switched to a draft.
 *                            Default is 'Post reverted to draft.' / 'Page reverted to draft.'
 * - `item_trashed` - Label used when an item is moved to Trash. Default is 'Post trashed.' / 'Page trashed.'
 * - `item_scheduled` - Label used when an item is scheduled for publishing. Default is 'Post scheduled.' /
 *                    'Page scheduled.'
 * - `item_updated` - Label used when an item is updated. Default is 'Post updated.' / 'Page updated.'
 * - `item_link` - Title for a navigation link block variation. Default is 'Post Link' / 'Page Link'.
 * - `item_link_description` - Description for a navigation link block variation. Default is 'A link to a post.' /
 *                             'A link to a page.'
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `archives`, `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a `WP_Post_Type` object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 * @since 5.0.0 Added the `item_published`, `item_published_privately`, `item_reverted_to_draft`,
 *              `item_scheduled`, and `item_updated` labels.
 * @since 5.7.0 Added the `filter_by_date` label.
 * @since 5.8.0 Added the `item_link` and `item_link_description` labels.
 * @since 6.3.0 Added the `item_trashed` label.
 * @since 6.4.0 Changed default values for the `add_new` label to include the type of content.
 *              This matches `add_new_item` and provides more context for better accessibility.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = WP_Post_Type::get_default_labels();
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * Possible hook names include:
     *
     *  - `post_type_labels_post`
     *  - `post_type_labels_page`
     *  - `post_type_labels_attachment`
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 6.3

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#disambiguation-by-context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the Trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the featured image meta box title. Default is 'Featured image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `filter_by_date` - Label for the date filter in list tables. Default is 'Filter by date'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 * - `item_published` - Label used when an item is published. Default is 'Post published.' / 'Page published.'
 * - `item_published_privately` - Label used when an item is published with private visibility.
 *                              Default is 'Post published privately.' / 'Page published privately.'
 * - `item_reverted_to_draft` - Label used when an item is switched to a draft.
 *                            Default is 'Post reverted to draft.' / 'Page reverted to draft.'
 * - `item_trashed` - Label used when an item is moved to Trash. Default is 'Post trashed.' / 'Page trashed.'
 * - `item_scheduled` - Label used when an item is scheduled for publishing. Default is 'Post scheduled.' /
 *                    'Page scheduled.'
 * - `item_updated` - Label used when an item is updated. Default is 'Post updated.' / 'Page updated.'
 * - `item_link` - Title for a navigation link block variation. Default is 'Post Link' / 'Page Link'.
 * - `item_link_description` - Description for a navigation link block variation. Default is 'A link to a post.' /
 *                             'A link to a page.'
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `archives`, `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a `WP_Post_Type` object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 * @since 5.0.0 Added the `item_published`, `item_published_privately`, `item_reverted_to_draft`,
 *              `item_scheduled`, and `item_updated` labels.
 * @since 5.7.0 Added the `filter_by_date` label.
 * @since 5.8.0 Added the `item_link` and `item_link_description` labels.
 * @since 6.3.0 Added the `item_trashed` label.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = WP_Post_Type::get_default_labels();
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * Possible hook names include:
     *
     *  - `post_type_labels_post`
     *  - `post_type_labels_page`
     *  - `post_type_labels_attachment`
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 6.1

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#disambiguation-by-context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the Trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the featured image meta box title. Default is 'Featured image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `filter_by_date` - Label for the date filter in list tables. Default is 'Filter by date'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 * - `item_published` - Label used when an item is published. Default is 'Post published.' / 'Page published.'
 * - `item_published_privately` - Label used when an item is published with private visibility.
 *                              Default is 'Post published privately.' / 'Page published privately.'
 * - `item_reverted_to_draft` - Label used when an item is switched to a draft.
 *                            Default is 'Post reverted to draft.' / 'Page reverted to draft.'
 * - `item_scheduled` - Label used when an item is scheduled for publishing. Default is 'Post scheduled.' /
 *                    'Page scheduled.'
 * - `item_updated` - Label used when an item is updated. Default is 'Post updated.' / 'Page updated.'
 * - `item_link` - Title for a navigation link block variation. Default is 'Post Link' / 'Page Link'.
 * - `item_link_description` - Description for a navigation link block variation. Default is 'A link to a post.' /
 *                             'A link to a page.'
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `archives`, `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a `WP_Post_Type` object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 * @since 5.0.0 Added the `item_published`, `item_published_privately`, `item_reverted_to_draft`,
 *              `item_scheduled`, and `item_updated` labels.
 * @since 5.7.0 Added the `filter_by_date` label.
 * @since 5.8.0 Added the `item_link` and `item_link_description` labels.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = WP_Post_Type::get_default_labels();
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * Possible hook names include:
     *
     *  - `post_type_labels_post`
     *  - `post_type_labels_page`
     *  - `post_type_labels_attachment`
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 5.8

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#disambiguation-by-context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the Trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the featured image meta box title. Default is 'Featured image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `filter_by_date` - Label for the date filter in list tables. Default is 'Filter by date'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 * - `item_published` - Label used when an item is published. Default is 'Post published.' / 'Page published.'
 * - `item_published_privately` - Label used when an item is published with private visibility.
 *                              Default is 'Post published privately.' / 'Page published privately.'
 * - `item_reverted_to_draft` - Label used when an item is switched to a draft.
 *                            Default is 'Post reverted to draft.' / 'Page reverted to draft.'
 * - `item_scheduled` - Label used when an item is scheduled for publishing. Default is 'Post scheduled.' /
 *                    'Page scheduled.'
 * - `item_updated` - Label used when an item is updated. Default is 'Post updated.' / 'Page updated.'
 * - `item_link` - Title for a navigation link block variation. Default is 'Post Link' / 'Page Link'.
 * - `item_link_description` - Description for a navigation link block variation. Default is 'A link to a post.' /
 *                             'A link to a page.'
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `archives`, `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a `WP_Post_Type` object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 * @since 5.0.0 Added the `item_published`, `item_published_privately`, `item_reverted_to_draft`,
 *              `item_scheduled`, and `item_updated` labels.
 * @since 5.7.0 Added the `filter_by_date` label.
 * @since 5.8.0 Added the `item_link` and `item_link_description` labels.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'view_items' => array(__('View Posts'), __('View Pages')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'attributes' => array(__('Post Attributes'), __('Page Attributes')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(_x('Featured image', 'post'), _x('Featured image', 'page')), 'set_featured_image' => array(_x('Set featured image', 'post'), _x('Set featured image', 'page')), 'remove_featured_image' => array(_x('Remove featured image', 'post'), _x('Remove featured image', 'page')), 'use_featured_image' => array(_x('Use as featured image', 'post'), _x('Use as featured image', 'page')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'filter_by_date' => array(__('Filter by date'), __('Filter by date')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')), 'item_published' => array(__('Post published.'), __('Page published.')), 'item_published_privately' => array(__('Post published privately.'), __('Page published privately.')), 'item_reverted_to_draft' => array(__('Post reverted to draft.'), __('Page reverted to draft.')), 'item_scheduled' => array(__('Post scheduled.'), __('Page scheduled.')), 'item_updated' => array(__('Post updated.'), __('Page updated.')), 'item_link' => array(_x('Post Link', 'navigation link block title'), _x('Page Link', 'navigation link block title')), 'item_link_description' => array(_x('A link to a post.', 'navigation link block description'), _x('A link to a page.', 'navigation link block description')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * Possible hook names include:
     *
     *  - `post_type_labels_post`
     *  - `post_type_labels_page`
     *  - `post_type_labels_attachment`
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 5.7

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#disambiguation-by-context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the Trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the featured image meta box title. Default is 'Featured image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `filter_by_date` - Label for the date filter in list tables. Default is 'Filter by date'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 * - `item_published` - Label used when an item is published. Default is 'Post published.' / 'Page published.'
 * - `item_published_privately` - Label used when an item is published with private visibility.
 *                              Default is 'Post published privately.' / 'Page published privately.'
 * - `item_reverted_to_draft` - Label used when an item is switched to a draft.
 *                            Default is 'Post reverted to draft.' / 'Page reverted to draft.'
 * - `item_scheduled` - Label used when an item is scheduled for publishing. Default is 'Post scheduled.' /
 *                    'Page scheduled.'
 * - `item_updated` - Label used when an item is updated. Default is 'Post updated.' / 'Page updated.'
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `archives`, `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a `WP_Post_Type` object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 * @since 5.0.0 Added the `item_published`, `item_published_privately`, `item_reverted_to_draft`,
 *              `item_scheduled`, and `item_updated` labels.
 * @since 5.7.0 Added the `filter_by_date` label.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'view_items' => array(__('View Posts'), __('View Pages')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'attributes' => array(__('Post Attributes'), __('Page Attributes')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(_x('Featured image', 'post'), _x('Featured image', 'page')), 'set_featured_image' => array(_x('Set featured image', 'post'), _x('Set featured image', 'page')), 'remove_featured_image' => array(_x('Remove featured image', 'post'), _x('Remove featured image', 'page')), 'use_featured_image' => array(_x('Use as featured image', 'post'), _x('Use as featured image', 'page')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'filter_by_date' => array(__('Filter by date'), __('Filter by date')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')), 'item_published' => array(__('Post published.'), __('Page published.')), 'item_published_privately' => array(__('Post published privately.'), __('Page published privately.')), 'item_reverted_to_draft' => array(__('Post reverted to draft.'), __('Page reverted to draft.')), 'item_scheduled' => array(__('Post scheduled.'), __('Page scheduled.')), 'item_updated' => array(__('Post updated.'), __('Page updated.')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 5.4

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#disambiguation-by-context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the Trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the featured image meta box title. Default is 'Featured image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 * - `item_published` - Label used when an item is published. Default is 'Post published.' / 'Page published.'
 * - `item_published_privately` - Label used when an item is published with private visibility.
 *                              Default is 'Post published privately.' / 'Page published privately.'
 * - `item_reverted_to_draft` - Label used when an item is switched to a draft.
 *                            Default is 'Post reverted to draft.' / 'Page reverted to draft.'
 * - `item_scheduled` - Label used when an item is scheduled for publishing. Default is 'Post scheduled.' /
 *                    'Page scheduled.'
 * - `item_updated` - Label used when an item is updated. Default is 'Post updated.' / 'Page updated.'
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `archives`, `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a `WP_Post_Type` object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 * @since 5.0.0 Added the `item_published`, `item_published_privately`, `item_reverted_to_draft`,
 *              `item_scheduled`, and `item_updated` labels.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'view_items' => array(__('View Posts'), __('View Pages')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'attributes' => array(__('Post Attributes'), __('Page Attributes')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(_x('Featured image', 'post'), _x('Featured image', 'page')), 'set_featured_image' => array(_x('Set featured image', 'post'), _x('Set featured image', 'page')), 'remove_featured_image' => array(_x('Remove featured image', 'post'), _x('Remove featured image', 'page')), 'use_featured_image' => array(_x('Use as featured image', 'post'), _x('Use as featured image', 'page')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')), 'item_published' => array(__('Post published.'), __('Page published.')), 'item_published_privately' => array(__('Post published privately.'), __('Page published privately.')), 'item_reverted_to_draft' => array(__('Post reverted to draft.'), __('Page reverted to draft.')), 'item_scheduled' => array(__('Post scheduled.'), __('Page scheduled.')), 'item_updated' => array(__('Post updated.'), __('Page updated.')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 5.3

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#disambiguation-by-context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the Featured Image meta box title. Default is 'Featured Image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 * - `item_published` - Label used when an item is published. Default is 'Post published.' / 'Page published.'
 * - `item_published_privately` - Label used when an item is published with private visibility.
 *                              Default is 'Post published privately.' / 'Page published privately.'
 * - `item_reverted_to_draft` - Label used when an item is switched to a draft.
 *                            Default is 'Post reverted to draft.' / 'Page reverted to draft.'
 * - `item_scheduled` - Label used when an item is scheduled for publishing. Default is 'Post scheduled.' /
 *                    'Page scheduled.'
 * - `item_updated` - Label used when an item is updated. Default is 'Post updated.' / 'Page updated.'
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `archives`, `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a `WP_Post_Type` object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 * @since 5.0.0 Added the `item_published`, `item_published_privately`, `item_reverted_to_draft`,
 *              `item_scheduled`, and `item_updated` labels.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'view_items' => array(__('View Posts'), __('View Pages')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'attributes' => array(__('Post Attributes'), __('Page Attributes')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(_x('Featured Image', 'post'), _x('Featured Image', 'page')), 'set_featured_image' => array(_x('Set featured image', 'post'), _x('Set featured image', 'page')), 'remove_featured_image' => array(_x('Remove featured image', 'post'), _x('Remove featured image', 'page')), 'use_featured_image' => array(_x('Use as featured image', 'post'), _x('Use as featured image', 'page')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')), 'item_published' => array(__('Post published.'), __('Page published.')), 'item_published_privately' => array(__('Post published privately.'), __('Page published privately.')), 'item_reverted_to_draft' => array(__('Post reverted to draft.'), __('Page reverted to draft.')), 'item_scheduled' => array(__('Post scheduled.'), __('Page scheduled.')), 'item_updated' => array(__('Post updated.'), __('Page updated.')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 5.1

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the Featured Image meta box title. Default is 'Featured Image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 * - `item_published` - Label used when an item is published. Default is 'Post published.' / 'Page published.'
 * - `item_published_privately` - Label used when an item is published with private visibility.
 *                              Default is 'Post published privately.' / 'Page published privately.'
 * - `item_reverted_to_draft` - Label used when an item is switched to a draft.
 *                            Default is 'Post reverted to draft.' / 'Page reverted to draft.'
 * - `item_scheduled` - Label used when an item is scheduled for publishing. Default is 'Post scheduled.' /
 *                    'Page scheduled.'
 * - `item_updated` - Label used when an item is updated. Default is 'Post updated.' / 'Page updated.'
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `archives`, `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a `WP_Post_Type` object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 * @since 5.0.0 Added the `item_published`, `item_published_privately`, `item_reverted_to_draft`,
 *              `item_scheduled`, and `item_updated` labels.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'view_items' => array(__('View Posts'), __('View Pages')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'attributes' => array(__('Post Attributes'), __('Page Attributes')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(_x('Featured Image', 'post'), _x('Featured Image', 'page')), 'set_featured_image' => array(_x('Set featured image', 'post'), _x('Set featured image', 'page')), 'remove_featured_image' => array(_x('Remove featured image', 'post'), _x('Remove featured image', 'page')), 'use_featured_image' => array(_x('Use as featured image', 'post'), _x('Use as featured image', 'page')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')), 'item_published' => array(__('Post published.'), __('Page published.')), 'item_published_privately' => array(__('Post published privately.'), __('Page published privately.')), 'item_reverted_to_draft' => array(__('Post reverted to draft.'), __('Page reverted to draft.')), 'item_scheduled' => array(__('Post scheduled.'), __('Page scheduled.')), 'item_updated' => array(__('Post updated.'), __('Page updated.')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 5.0

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the Featured Image meta box title. Default is 'Featured Image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 * - `item_published` - Label used when an item is published. Default is 'Post published.' / 'Page published.'
 * - `item_published_privately` - Label used when an item is published with private visibility.
 *                              Default is 'Post published privately.' / 'Page published privately.'
 * - `item_reverted_to_draft` - Label used when an item is switched to a draft.
 *                            Default is 'Post reverted to draft.' / 'Page reverted to draft.'
 * - `item_scheduled` - Label used when an item is scheduled for publishing. Default is 'Post scheduled.' /
 *                    'Page scheduled.'
 * - `item_updated` - Label used when an item is updated. Default is 'Post updated.' / 'Page updated.'
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `archives`, `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a WP_Post_Type object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 * @since 5.0.0 Added the `item_published`, `item_published_privately`, `item_reverted_to_draft`,
 *              `item_scheduled`, and `item_updated` labels.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'view_items' => array(__('View Posts'), __('View Pages')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'attributes' => array(__('Post Attributes'), __('Page Attributes')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(_x('Featured Image', 'post'), _x('Featured Image', 'page')), 'set_featured_image' => array(_x('Set featured image', 'post'), _x('Set featured image', 'page')), 'remove_featured_image' => array(_x('Remove featured image', 'post'), _x('Remove featured image', 'page')), 'use_featured_image' => array(_x('Use as featured image', 'post'), _x('Use as featured image', 'page')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')), 'item_published' => array(__('Post published.'), __('Page published.')), 'item_published_privately' => array(__('Post published privately.'), __('Page published privately.')), 'item_reverted_to_draft' => array(__('Post reverted to draft.'), __('Page reverted to draft.')), 'item_scheduled' => array(__('Post scheduled.'), __('Page scheduled.')), 'item_updated' => array(__('Post updated.'), __('Page updated.')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 4.8

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the Featured Image meta box title. Default is 'Featured Image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `archives`, `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a WP_Post_Type object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'view_items' => array(__('View Posts'), __('View Pages')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'attributes' => array(__('Post Attributes'), __('Page Attributes')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(_x('Featured Image', 'post'), _x('Featured Image', 'page')), 'set_featured_image' => array(_x('Set featured image', 'post'), _x('Set featured image', 'page')), 'remove_featured_image' => array(_x('Remove featured image', 'post'), _x('Remove featured image', 'page')), 'use_featured_image' => array(_x('Use as featured image', 'post'), _x('Use as featured image', 'page')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 4.7

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `view_items` - Label for viewing post type archives. Default is 'View Posts' / 'View Pages'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `attributes` - Label for the attributes meta box. Default is 'Post Attributes' / 'Page Attributes'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the Featured Image meta box title. Default is 'Featured Image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a WP_Post_Type object.
 * @since 4.7.0 Added the `view_items` and `attributes` labels.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'view_items' => array(__('View Posts'), __('View Pages')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'attributes' => array(__('Post Attributes'), __('Page Attributes')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(__('Featured Image'), __('Featured Image')), 'set_featured_image' => array(__('Set featured image'), __('Set featured image')), 'remove_featured_image' => array(__('Remove featured image'), __('Remove featured image')), 'use_featured_image' => array(__('Use as featured image'), __('Use as featured image')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 4.6

/**
 * Builds an object with all post type labels out of a post type object.
 *
 * Accepted keys of the label array in the post type object:
 *
 * - `name` - General name for the post type, usually plural. The same and overridden
 *          by `$post_type_object->label`. Default is 'Posts' / 'Pages'.
 * - `singular_name` - Name for one object of this post type. Default is 'Post' / 'Page'.
 * - `add_new` - Default is 'Add New' for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a {@link https://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context gettext context}
 *             matching your post type. Example: `_x( 'Add New', 'product', 'textdomain' );`.
 * - `add_new_item` - Label for adding a new singular item. Default is 'Add New Post' / 'Add New Page'.
 * - `edit_item` - Label for editing a singular item. Default is 'Edit Post' / 'Edit Page'.
 * - `new_item` - Label for the new item page title. Default is 'New Post' / 'New Page'.
 * - `view_item` - Label for viewing a singular item. Default is 'View Post' / 'View Page'.
 * - `search_items` - Label for searching plural items. Default is 'Search Posts' / 'Search Pages'.
 * - `not_found` - Label used when no items are found. Default is 'No posts found' / 'No pages found'.
 * - `not_found_in_trash` - Label used when no items are in the trash. Default is 'No posts found in Trash' /
 *                        'No pages found in Trash'.
 * - `parent_item_colon` - Label used to prefix parents of hierarchical items. Not used on non-hierarchical
 *                       post types. Default is 'Parent Page:'.
 * - `all_items` - Label to signify all items in a submenu link. Default is 'All Posts' / 'All Pages'.
 * - `archives` - Label for archives in nav menus. Default is 'Post Archives' / 'Page Archives'.
 * - `insert_into_item` - Label for the media frame button. Default is 'Insert into post' / 'Insert into page'.
 * - `uploaded_to_this_item` - Label for the media frame filter. Default is 'Uploaded to this post' /
 *                           'Uploaded to this page'.
 * - `featured_image` - Label for the Featured Image meta box title. Default is 'Featured Image'.
 * - `set_featured_image` - Label for setting the featured image. Default is 'Set featured image'.
 * - `remove_featured_image` - Label for removing the featured image. Default is 'Remove featured image'.
 * - `use_featured_image` - Label in the media frame for using a featured image. Default is 'Use as featured image'.
 * - `menu_name` - Label for the menu name. Default is the same as `name`.
 * - `filter_items_list` - Label for the table views hidden heading. Default is 'Filter posts list' /
 *                       'Filter pages list'.
 * - `items_list_navigation` - Label for the table pagination hidden heading. Default is 'Posts list navigation' /
 *                           'Pages list navigation'.
 * - `items_list` - Label for the table hidden heading. Default is 'Posts list' / 'Pages list'.
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * Note: To set labels used in post type admin notices, see the {@see 'post_updated_messages'} filter.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 * @since 4.6.0 Converted the `$post_type` parameter to accept a WP_Post_Type object.
 *
 * @access private
 *
 * @param object|WP_Post_Type $post_type_object Post type object.
 * @return object Object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(__('Featured Image'), __('Featured Image')), 'set_featured_image' => array(__('Set featured image'), __('Set featured image')), 'remove_featured_image' => array(__('Remove featured image'), __('Remove featured image')), 'use_featured_image' => array(__('Use as featured image'), __('Use as featured image')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 4.5

/**
 * Build an object with all post type labels out of a post type object
 *
 * Accepted keys of the label array in the post type object:
 *
 * - name - general name for the post type, usually plural. The same and overridden
 *          by $post_type_object->label. Default is Posts/Pages
 * - singular_name - name for one object of this post type. Default is Post/Page
 * - add_new - Default is Add New for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a gettext context
 *             {@link https://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context}
 *             matching your post type. Example: `_x( 'Add New', 'product' );`.
 * - add_new_item - Default is Add New Post/Add New Page.
 * - edit_item - Default is Edit Post/Edit Page.
 * - new_item - Default is New Post/New Page.
 * - view_item - Default is View Post/View Page.
 * - search_items - Default is Search Posts/Search Pages.
 * - not_found - Default is No posts found/No pages found.
 * - not_found_in_trash - Default is No posts found in Trash/No pages found in Trash.
 * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical
 * ones the default is 'Parent Page:'.
 * - all_items - String for the submenu. Default is All Posts/All Pages.
 * - archives - String for use with archives in nav menus. Default is Post Archives/Page Archives.
 * - insert_into_item - String for the media frame button. Default is Insert into post/Insert into page.
 * - uploaded_to_this_item - String for the media frame filter. Default is Uploaded to this post/Uploaded to this page.
 * - featured_image - Default is Featured Image.
 * - set_featured_image - Default is Set featured image.
 * - remove_featured_image - Default is Remove featured image.
 * - use_featured_image - Default is Use as featured image.
 * - menu_name - Default is the same as `name`.
 * - filter_items_list - String for the table views hidden heading.
 * - items_list_navigation - String for the table pagination hidden heading.
 * - items_list - String for the table hidden heading.
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 *
 * @access private
 *
 * @param object $post_type_object Post type object.
 * @return object object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(__('Featured Image'), __('Featured Image')), 'set_featured_image' => array(__('Set featured image'), __('Set featured image')), 'remove_featured_image' => array(__('Remove featured image'), __('Remove featured image')), 'use_featured_image' => array(__('Use as featured image'), __('Use as featured image')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filter the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 4.4

/**
 * Build an object with all post type labels out of a post type object
 *
 * Accepted keys of the label array in the post type object:
 *
 * - name - general name for the post type, usually plural. The same and overridden
 *          by $post_type_object->label. Default is Posts/Pages
 * - singular_name - name for one object of this post type. Default is Post/Page
 * - add_new - Default is Add New for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a gettext context
 *             {@link https://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context}
 *             matching your post type. Example: `_x( 'Add New', 'product' );`.
 * - add_new_item - Default is Add New Post/Add New Page.
 * - edit_item - Default is Edit Post/Edit Page.
 * - new_item - Default is New Post/New Page.
 * - view_item - Default is View Post/View Page.
 * - search_items - Default is Search Posts/Search Pages.
 * - not_found - Default is No posts found/No pages found.
 * - not_found_in_trash - Default is No posts found in Trash/No pages found in Trash.
 * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical
 *                       ones the default is 'Parent Page:'.
 * - all_items - String for the submenu. Default is All Posts/All Pages.
 * - archives - String for use with archives in nav menus. Default is Post Archives/Page Archives.
 * - insert_into_item - String for the media frame button. Default is Insert into post/Insert into page.
 * - uploaded_to_this_item - String for the media frame filter. Default is Uploaded to this post/Uploaded to this page.
 * - featured_image - Default is Featured Image.
 * - set_featured_image - Default is Set featured image.
 * - remove_featured_image - Default is Remove featured image.
 * - use_featured_image - Default is Use as featured image.
 * - menu_name - Default is the same as `name`.
 * - filter_items_list - String for the table views hidden heading.
 * - items_list_navigation - String for the table pagination hidden heading.
 * - items_list - String for the table hidden heading.
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @since 4.4.0 Added the `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
 *              `items_list_navigation`, and `items_list` labels.
 *
 * @access private
 *
 * @param object $post_type_object Post type object.
 * @return object object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'archives' => array(__('Post Archives'), __('Page Archives')), 'insert_into_item' => array(__('Insert into post'), __('Insert into page')), 'uploaded_to_this_item' => array(__('Uploaded to this post'), __('Uploaded to this page')), 'featured_image' => array(__('Featured Image'), __('Featured Image')), 'set_featured_image' => array(__('Set featured image'), __('Set featured image')), 'remove_featured_image' => array(__('Remove featured image'), __('Remove featured image')), 'use_featured_image' => array(__('Use as featured image'), __('Use as featured image')), 'filter_items_list' => array(__('Filter posts list'), __('Filter pages list')), 'items_list_navigation' => array(__('Posts list navigation'), __('Pages list navigation')), 'items_list' => array(__('Posts list'), __('Pages list')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    $default_labels = clone $labels;
    /**
     * Filter the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    $labels = apply_filters("post_type_labels_{$post_type}", $labels);
    // Ensure that the filtered labels contain all required default values.
    $labels = (object) array_merge((array) $default_labels, (array) $labels);
    return $labels;
}

WordPress Version: 4.3

/**
 * Build an object with all post type labels out of a post type object
 *
 * Accepted keys of the label array in the post type object:
 *
 * - name - general name for the post type, usually plural. The same and overridden
 *          by $post_type_object->label. Default is Posts/Pages
 * - singular_name - name for one object of this post type. Default is Post/Page
 * - add_new - Default is Add New for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a gettext context
 *             {@link https://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context}
 *             matching your post type. Example: `_x( 'Add New', 'product' );`.
 * - add_new_item - Default is Add New Post/Add New Page.
 * - edit_item - Default is Edit Post/Edit Page.
 * - new_item - Default is New Post/New Page.
 * - view_item - Default is View Post/View Page.
 * - search_items - Default is Search Posts/Search Pages.
 * - not_found - Default is No posts found/No pages found.
 * - not_found_in_trash - Default is No posts found in Trash/No pages found in Trash.
 * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical
 *                       ones the default is 'Parent Page:'.
 * - all_items - String for the submenu. Default is All Posts/All Pages.
 * - featured_image - Default is Featured Image.
 * - set_featured_image - Default is Set featured image.
 * - remove_featured_image - Default is Remove featured image.
 * - use_featured_image - Default is Use as featured image.
 * - menu_name - Default is the same as `name`.
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
 *              and `use_featured_image` labels.
 * @access private
 *
 * @param object $post_type_object Post type object.
 * @return object object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')), 'featured_image' => array(__('Featured Image'), __('Featured Image')), 'set_featured_image' => array(__('Set featured image'), __('Set featured image')), 'remove_featured_image' => array(__('Remove featured image'), __('Remove featured image')), 'use_featured_image' => array(__('Use as featured image'), __('Use as featured image')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    /**
     * Filter the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param object $labels Object with labels for the post type as member variables.
     */
    return apply_filters("post_type_labels_{$post_type}", $labels);
}

WordPress Version: 4.2

/**
 * Build an object with all post type labels out of a post type object
 *
 * Accepted keys of the label array in the post type object:
 *
 * - name - general name for the post type, usually plural. The same and overridden
 *          by $post_type_object->label. Default is Posts/Pages
 * - singular_name - name for one object of this post type. Default is Post/Page
 * - add_new - Default is Add New for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a gettext context
 *             {@link https://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context}
 *             matching your post type. Example: `_x( 'Add New', 'product' );`.
 * - add_new_item - Default is Add New Post/Add New Page.
 * - edit_item - Default is Edit Post/Edit Page.
 * - new_item - Default is New Post/New Page.
 * - view_item - Default is View Post/View Page.
 * - search_items - Default is Search Posts/Search Pages.
 * - not_found - Default is No posts found/No pages found.
 * - not_found_in_trash - Default is No posts found in Trash/No pages found in Trash.
 * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical
 *                       ones the default is 'Parent Page:'.
 * - all_items - String for the submenu. Default is All Posts/All Pages.
 * - menu_name - Default is the same as `name`.
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * @since 3.0.0
 * @access private
 *
 * @param object $post_type_object Post type object.
 * @return object object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    /**
     * Filter the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param array $labels Array of labels for the given post type.
     */
    return apply_filters("post_type_labels_{$post_type}", $labels);
}

WordPress Version: 4.1

/**
 * Build an object with all post type labels out of a post type object
 *
 * Accepted keys of the label array in the post type object:
 *
 * - name - general name for the post type, usually plural. The same and overridden
 *          by $post_type_object->label. Default is Posts/Pages
 * - singular_name - name for one object of this post type. Default is Post/Page
 * - add_new - Default is Add New for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a gettext context
 *             {@link http://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context}
 *             matching your post type. Example: `_x( 'Add New', 'product' );`.
 * - add_new_item - Default is Add New Post/Add New Page.
 * - edit_item - Default is Edit Post/Edit Page.
 * - new_item - Default is New Post/New Page.
 * - view_item - Default is View Post/View Page.
 * - search_items - Default is Search Posts/Search Pages.
 * - not_found - Default is No posts found/No pages found.
 * - not_found_in_trash - Default is No posts found in Trash/No pages found in Trash.
 * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical
 *                       ones the default is 'Parent Page:'.
 * - all_items - String for the submenu. Default is All Posts/All Pages.
 * - menu_name - Default is the same as `name`.
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * @since 3.0.0
 * @access private
 *
 * @param object $post_type_object Post type object.
 * @return object object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    /**
     * Filter the labels of a specific post type.
     *
     * The dynamic portion of the hook name, `$post_type`, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param array $labels Array of labels for the given post type.
     */
    return apply_filters("post_type_labels_{$post_type}", $labels);
}

WordPress Version: 4.0

/**
 * Build an object with all post type labels out of a post type object
 *
 * Accepted keys of the label array in the post type object:
 *
 * - name - general name for the post type, usually plural. The same and overridden
 *          by $post_type_object->label. Default is Posts/Pages
 * - singular_name - name for one object of this post type. Default is Post/Page
 * - add_new - Default is Add New for both hierarchical and non-hierarchical types.
 *             When internationalizing this string, please use a gettext context
 *             {@see http://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context}
 *             matching your post type. Example: <code>_x('Add New', 'product');</code>.
 * - add_new_item - Default is Add New Post/Add New Page.
 * - edit_item - Default is Edit Post/Edit Page.
 * - new_item - Default is New Post/New Page.
 * - view_item - Default is View Post/View Page.
 * - search_items - Default is Search Posts/Search Pages.
 * - not_found - Default is No posts found/No pages found.
 * - not_found_in_trash - Default is No posts found in Trash/No pages found in Trash.
 * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical
 *                       ones the default is 'Parent Page:'.
 * - all_items - String for the submenu. Default is All Posts/All Pages.
 * - menu_name - Default is the same as <code>name</code>.
 *
 * Above, the first default value is for non-hierarchical post types (like posts)
 * and the second one is for hierarchical post types (like pages).
 *
 * @since 3.0.0
 * @access private
 *
 * @param object $post_type_object Post type object.
 * @return object object with all the labels as member variables.
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    /**
     * Filter the labels of a specific post type.
     *
     * The dynamic portion of the hook name, $post_type, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param array $labels Array of labels for the given post type.
     */
    return apply_filters("post_type_labels_{$post_type}", $labels);
}

WordPress Version: 3.9

/**
 * Builds an object with all post type labels out of a post type object
 *
 * Accepted keys of the label array in the post type object:
 * - name - general name for the post type, usually plural. The same and overridden by $post_type_object->label. Default is Posts/Pages
 * - singular_name - name for one object of this post type. Default is Post/Page
 * - add_new - Default is Add New for both hierarchical and non-hierarchical types. When internationalizing this string, please use a {@link http://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context gettext context} matching your post type. Example: <code>_x('Add New', 'product');</code>
 * - add_new_item - Default is Add New Post/Add New Page
 * - edit_item - Default is Edit Post/Edit Page
 * - new_item - Default is New Post/New Page
 * - view_item - Default is View Post/View Page
 * - search_items - Default is Search Posts/Search Pages
 * - not_found - Default is No posts found/No pages found
 * - not_found_in_trash - Default is No posts found in Trash/No pages found in Trash
 * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical ones the default is Parent Page:
 * - all_items - String for the submenu. Default is All Posts/All Pages
 * - menu_name - Default is the same as <code>name</code>
 *
 * Above, the first default value is for non-hierarchical post types (like posts) and the second one is for hierarchical post types (like pages).
 *
 * @since 3.0.0
 * @access private
 *
 * @param object $post_type_object
 * @return object object with all the labels as member variables
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    /**
     * Filter the labels of a specific post type.
     *
     * The dynamic portion of the hook name, $post_type, refers to
     * the post type slug.
     *
     * @since 3.5.0
     *
     * @see get_post_type_labels() for the full list of labels.
     *
     * @param array $labels Array of labels for the given post type.
     */
    return apply_filters("post_type_labels_{$post_type}", $labels);
}

WordPress Version: 3.7

/**
 * Builds an object with all post type labels out of a post type object
 *
 * Accepted keys of the label array in the post type object:
 * - name - general name for the post type, usually plural. The same and overridden by $post_type_object->label. Default is Posts/Pages
 * - singular_name - name for one object of this post type. Default is Post/Page
 * - add_new - Default is Add New for both hierarchical and non-hierarchical types. When internationalizing this string, please use a {@link http://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context gettext context} matching your post type. Example: <code>_x('Add New', 'product');</code>
 * - add_new_item - Default is Add New Post/Add New Page
 * - edit_item - Default is Edit Post/Edit Page
 * - new_item - Default is New Post/New Page
 * - view_item - Default is View Post/View Page
 * - search_items - Default is Search Posts/Search Pages
 * - not_found - Default is No posts found/No pages found
 * - not_found_in_trash - Default is No posts found in Trash/No pages found in Trash
 * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical ones the default is Parent Page:
 * - all_items - String for the submenu. Default is All Posts/All Pages
 * - menu_name - Default is the same as <code>name</code>
 *
 * Above, the first default value is for non-hierarchical post types (like posts) and the second one is for hierarchical post types (like pages).
 *
 * @since 3.0.0
 * @access private
 *
 * @param object $post_type_object
 * @return object object with all the labels as member variables
 */
function get_post_type_labels($post_type_object)
{
    $nohier_vs_hier_defaults = array('name' => array(_x('Posts', 'post type general name'), _x('Pages', 'post type general name')), 'singular_name' => array(_x('Post', 'post type singular name'), _x('Page', 'post type singular name')), 'add_new' => array(_x('Add New', 'post'), _x('Add New', 'page')), 'add_new_item' => array(__('Add New Post'), __('Add New Page')), 'edit_item' => array(__('Edit Post'), __('Edit Page')), 'new_item' => array(__('New Post'), __('New Page')), 'view_item' => array(__('View Post'), __('View Page')), 'search_items' => array(__('Search Posts'), __('Search Pages')), 'not_found' => array(__('No posts found.'), __('No pages found.')), 'not_found_in_trash' => array(__('No posts found in Trash.'), __('No pages found in Trash.')), 'parent_item_colon' => array(null, __('Parent Page:')), 'all_items' => array(__('All Posts'), __('All Pages')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($post_type_object, $nohier_vs_hier_defaults);
    $post_type = $post_type_object->name;
    return apply_filters("post_type_labels_{$post_type}", $labels);
}