get_taxonomy_labels

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

WordPress Version: 6.1

/**
 * Builds an object with all taxonomy labels out of a taxonomy object.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
 * @since 4.9.0 Added the `most_used` and `back_to_items` labels.
 * @since 5.7.0 Added the `filter_by_item` label.
 * @since 5.8.0 Added the `item_link` and `item_link_description` labels.
 * @since 5.9.0 Added the `name_field_description`, `slug_field_description`,
 *              `parent_field_description`, and `desc_field_description` labels.
 *
 * @param WP_Taxonomy $tax Taxonomy object.
 * @return object {
 *     Taxonomy labels object. The first default value is for non-hierarchical taxonomies
 *     (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 *     @type string $name                       General name for the taxonomy, usually plural. The same
 *                                              as and overridden by `$tax->label`. Default 'Tags'/'Categories'.
 *     @type string $singular_name              Name for one object of this taxonomy. Default 'Tag'/'Category'.
 *     @type string $search_items               Default 'Search Tags'/'Search Categories'.
 *     @type string $popular_items              This label is only used for non-hierarchical taxonomies.
 *                                              Default 'Popular Tags'.
 *     @type string $all_items                  Default 'All Tags'/'All Categories'.
 *     @type string $parent_item                This label is only used for hierarchical taxonomies. Default
 *                                              'Parent Category'.
 *     @type string $parent_item_colon          The same as `parent_item`, but with colon `:` in the end.
 *     @type string $name_field_description     Description for the Name field on Edit Tags screen.
 *                                              Default 'The name is how it appears on your site'.
 *     @type string $slug_field_description     Description for the Slug field on Edit Tags screen.
 *                                              Default 'The “slug” is the URL-friendly version
 *                                              of the name. It is usually all lowercase and contains
 *                                              only letters, numbers, and hyphens'.
 *     @type string $parent_field_description   Description for the Parent field on Edit Tags screen.
 *                                              Default 'Assign a parent term to create a hierarchy.
 *                                              The term Jazz, for example, would be the parent
 *                                              of Bebop and Big Band'.
 *     @type string $desc_field_description     Description for the Description field on Edit Tags screen.
 *                                              Default 'The description is not prominent by default;
 *                                              however, some themes may show it'.
 *     @type string $edit_item                  Default 'Edit Tag'/'Edit Category'.
 *     @type string $view_item                  Default 'View Tag'/'View Category'.
 *     @type string $update_item                Default 'Update Tag'/'Update Category'.
 *     @type string $add_new_item               Default 'Add New Tag'/'Add New Category'.
 *     @type string $new_item_name              Default 'New Tag Name'/'New Category Name'.
 *     @type string $separate_items_with_commas This label is only used for non-hierarchical taxonomies. Default
 *                                              'Separate tags with commas', used in the meta box.
 *     @type string $add_or_remove_items        This label is only used for non-hierarchical taxonomies. Default
 *                                              'Add or remove tags', used in the meta box when JavaScript
 *                                              is disabled.
 *     @type string $choose_from_most_used      This label is only used on non-hierarchical taxonomies. Default
 *                                              'Choose from the most used tags', used in the meta box.
 *     @type string $not_found                  Default 'No tags found'/'No categories found', used in
 *                                              the meta box and taxonomy list table.
 *     @type string $no_terms                   Default 'No tags'/'No categories', used in the posts and media
 *                                              list tables.
 *     @type string $filter_by_item             This label is only used for hierarchical taxonomies. Default
 *                                              'Filter by category', used in the posts list table.
 *     @type string $items_list_navigation      Label for the table pagination hidden heading.
 *     @type string $items_list                 Label for the table hidden heading.
 *     @type string $most_used                  Title for the Most Used tab. Default 'Most Used'.
 *     @type string $back_to_items              Label displayed after a term has been updated.
 *     @type string $item_link                  Used in the block editor. Title for a navigation link block variation.
 *                                              Default 'Tag Link'/'Category Link'.
 *     @type string $item_link_description      Used in the block editor. Description for a navigation link block
 *                                              variation. Default 'A link to a tag'/'A link to a category'.
 * }
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = WP_Taxonomy::get_default_labels();
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
    $taxonomy = $tax->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific taxonomy.
     *
     * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     *
     * Possible hook names include:
     *
     *  - `taxonomy_labels_category`
     *  - `taxonomy_labels_post_tag`
     *
     * @since 4.4.0
     *
     * @see get_taxonomy_labels() for the full list of taxonomy labels.
     *
     * @param object $labels Object with labels for the taxonomy as member variables.
     */
    $labels = apply_filters("taxonomy_labels_{$taxonomy}", $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.9

/**
 * Builds an object with all taxonomy labels out of a taxonomy object.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
 * @since 4.9.0 Added the `most_used` and `back_to_items` labels.
 * @since 5.7.0 Added the `filter_by_item` label.
 * @since 5.8.0 Added the `item_link` and `item_link_description` labels.
 * @since 5.9.0 Added the `name_field_description`, `slug_field_description`,
 *              `parent_field_description`, and `desc_field_description` labels.
 *
 * @param WP_Taxonomy $tax Taxonomy object.
 * @return object {
 *     Taxonomy labels object. The first default value is for non-hierarchical taxonomies
 *     (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 *     @type string $name                       General name for the taxonomy, usually plural. The same
 *                                              as and overridden by `$tax->label`. Default 'Tags'/'Categories'.
 *     @type string $singular_name              Name for one object of this taxonomy. Default 'Tag'/'Category'.
 *     @type string $search_items               Default 'Search Tags'/'Search Categories'.
 *     @type string $popular_items              This label is only used for non-hierarchical taxonomies.
 *                                              Default 'Popular Tags'.
 *     @type string $all_items                  Default 'All Tags'/'All Categories'.
 *     @type string $parent_item                This label is only used for hierarchical taxonomies. Default
 *                                              'Parent Category'.
 *     @type string $parent_item_colon          The same as `parent_item`, but with colon `:` in the end.
 *     @type string $name_field_description     Description for the Name field on Edit Tags screen.
 *                                              Default 'The name is how it appears on your site'.
 *     @type string $slug_field_description     Description for the Slug field on Edit Tags screen.
 *                                              Default 'The “slug” is the URL-friendly version
 *                                              of the name. It is usually all lowercase and contains
 *                                              only letters, numbers, and hyphens'.
 *     @type string $parent_field_description   Description for the Parent field on Edit Tags screen.
 *                                              Default 'Assign a parent term to create a hierarchy.
 *                                              The term Jazz, for example, would be the parent
 *                                              of Bebop and Big Band'.
 *     @type string $desc_field_description     Description for the Description field on Edit Tags screen.
 *                                              Default 'The description is not prominent by default;
 *                                              however, some themes may show it'.
 *     @type string $edit_item                  Default 'Edit Tag'/'Edit Category'.
 *     @type string $view_item                  Default 'View Tag'/'View Category'.
 *     @type string $update_item                Default 'Update Tag'/'Update Category'.
 *     @type string $add_new_item               Default 'Add New Tag'/'Add New Category'.
 *     @type string $new_item_name              Default 'New Tag Name'/'New Category Name'.
 *     @type string $separate_items_with_commas This label is only used for non-hierarchical taxonomies. Default
 *                                              'Separate tags with commas', used in the meta box.
 *     @type string $add_or_remove_items        This label is only used for non-hierarchical taxonomies. Default
 *                                              'Add or remove tags', used in the meta box when JavaScript
 *                                              is disabled.
 *     @type string $choose_from_most_used      This label is only used on non-hierarchical taxonomies. Default
 *                                              'Choose from the most used tags', used in the meta box.
 *     @type string $not_found                  Default 'No tags found'/'No categories found', used in
 *                                              the meta box and taxonomy list table.
 *     @type string $no_terms                   Default 'No tags'/'No categories', used in the posts and media
 *                                              list tables.
 *     @type string $filter_by_item             This label is only used for hierarchical taxonomies. Default
 *                                              'Filter by category', used in the posts list table.
 *     @type string $items_list_navigation      Label for the table pagination hidden heading.
 *     @type string $items_list                 Label for the table hidden heading.
 *     @type string $most_used                  Title for the Most Used tab. Default 'Most Used'.
 *     @type string $back_to_items              Label displayed after a term has been updated.
 *     @type string $item_link                  Used in the block editor. Title for a navigation link block variation.
 *                                              Default 'Tag Link'/'Category Link'.
 *     @type string $item_link_description      Used in the block editor. Description for a navigation link block
 *                                              variation. Default 'A link to a tag'/'A link to a category'.
 * }
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $name_field_description = __('The name is how it appears on your site.');
    $slug_field_description = __('The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.');
    $parent_field_description = __('Assign a parent term to create a hierarchy. The term Jazz, for example, would be the parent of Bebop and Big Band.');
    $desc_field_description = __('The description is not prominent by default; however, some themes may show it.');
    $nohier_vs_hier_defaults = array(
        'name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')),
        'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')),
        'search_items' => array(__('Search Tags'), __('Search Categories')),
        'popular_items' => array(__('Popular Tags'), null),
        'all_items' => array(__('All Tags'), __('All Categories')),
        'parent_item' => array(null, __('Parent Category')),
        'parent_item_colon' => array(null, __('Parent Category:')),
        'name_field_description' => array($name_field_description, $name_field_description),
        'slug_field_description' => array($slug_field_description, $slug_field_description),
        'parent_field_description' => array(null, $parent_field_description),
        'desc_field_description' => array($desc_field_description, $desc_field_description),
        'edit_item' => array(__('Edit Tag'), __('Edit Category')),
        'view_item' => array(__('View Tag'), __('View Category')),
        'update_item' => array(__('Update Tag'), __('Update Category')),
        'add_new_item' => array(__('Add New Tag'), __('Add New Category')),
        'new_item_name' => array(__('New Tag Name'), __('New Category Name')),
        'separate_items_with_commas' => array(__('Separate tags with commas'), null),
        'add_or_remove_items' => array(__('Add or remove tags'), null),
        'choose_from_most_used' => array(__('Choose from the most used tags'), null),
        'not_found' => array(__('No tags found.'), __('No categories found.')),
        'no_terms' => array(__('No tags'), __('No categories')),
        'filter_by_item' => array(null, __('Filter by category')),
        'items_list_navigation' => array(__('Tags list navigation'), __('Categories list navigation')),
        'items_list' => array(__('Tags list'), __('Categories list')),
        /* translators: Tab heading when selecting from the most used terms. */
        'most_used' => array(_x('Most Used', 'tags'), _x('Most Used', 'categories')),
        'back_to_items' => array(__('← Go to Tags'), __('← Go to Categories')),
        'item_link' => array(_x('Tag Link', 'navigation link block title'), _x('Category Link', 'navigation link block description')),
        'item_link_description' => array(_x('A link to a tag.', 'navigation link block description'), _x('A link to a category.', 'navigation link block description')),
    );
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
    $taxonomy = $tax->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific taxonomy.
     *
     * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     *
     * Possible hook names include:
     *
     *  - `taxonomy_labels_category`
     *  - `taxonomy_labels_post_tag`
     *
     * @since 4.4.0
     *
     * @see get_taxonomy_labels() for the full list of taxonomy labels.
     *
     * @param object $labels Object with labels for the taxonomy as member variables.
     */
    $labels = apply_filters("taxonomy_labels_{$taxonomy}", $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 taxonomy labels out of a taxonomy object.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
 * @since 4.9.0 Added the `most_used` and `back_to_items` labels.
 * @since 5.7.0 Added the `filter_by_item` label.
 * @since 5.8.0 Added the `item_link` and `item_link_description` labels.
 *
 * @param WP_Taxonomy $tax Taxonomy object.
 * @return object {
 *     Taxonomy labels object. The first default value is for non-hierarchical taxonomies
 *     (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 *     @type string $name                       General name for the taxonomy, usually plural. The same
 *                                              as and overridden by `$tax->label`. Default 'Tags'/'Categories'.
 *     @type string $singular_name              Name for one object of this taxonomy. Default 'Tag'/'Category'.
 *     @type string $search_items               Default 'Search Tags'/'Search Categories'.
 *     @type string $popular_items              This label is only used for non-hierarchical taxonomies.
 *                                              Default 'Popular Tags'.
 *     @type string $all_items                  Default 'All Tags'/'All Categories'.
 *     @type string $parent_item                This label is only used for hierarchical taxonomies. Default
 *                                              'Parent Category'.
 *     @type string $parent_item_colon          The same as `parent_item`, but with colon `:` in the end.
 *     @type string $edit_item                  Default 'Edit Tag'/'Edit Category'.
 *     @type string $view_item                  Default 'View Tag'/'View Category'.
 *     @type string $update_item                Default 'Update Tag'/'Update Category'.
 *     @type string $add_new_item               Default 'Add New Tag'/'Add New Category'.
 *     @type string $new_item_name              Default 'New Tag Name'/'New Category Name'.
 *     @type string $separate_items_with_commas This label is only used for non-hierarchical taxonomies. Default
 *                                              'Separate tags with commas', used in the meta box.
 *     @type string $add_or_remove_items        This label is only used for non-hierarchical taxonomies. Default
 *                                              'Add or remove tags', used in the meta box when JavaScript
 *                                              is disabled.
 *     @type string $choose_from_most_used      This label is only used on non-hierarchical taxonomies. Default
 *                                              'Choose from the most used tags', used in the meta box.
 *     @type string $not_found                  Default 'No tags found'/'No categories found', used in
 *                                              the meta box and taxonomy list table.
 *     @type string $no_terms                   Default 'No tags'/'No categories', used in the posts and media
 *                                              list tables.
 *     @type string $filter_by_item             This label is only used for hierarchical taxonomies. Default
 *                                              'Filter by category', used in the posts list table.
 *     @type string $items_list_navigation      Label for the table pagination hidden heading.
 *     @type string $items_list                 Label for the table hidden heading.
 *     @type string $most_used                  Title for the Most Used tab. Default 'Most Used'.
 *     @type string $back_to_items              Label displayed after a term has been updated.
 *     @type string $item_link                  Used in the block editor. Title for a navigation link block variation.
 *                                              Default 'Tag Link'/'Category Link'.
 *     @type string $item_link_description      Used in the block editor. Description for a navigation link block
 *                                              variation. Default 'A link to a tag'/'A link to a category'.
 * }
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array(
        'name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')),
        'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')),
        'search_items' => array(__('Search Tags'), __('Search Categories')),
        'popular_items' => array(__('Popular Tags'), null),
        'all_items' => array(__('All Tags'), __('All Categories')),
        'parent_item' => array(null, __('Parent Category')),
        'parent_item_colon' => array(null, __('Parent Category:')),
        'edit_item' => array(__('Edit Tag'), __('Edit Category')),
        'view_item' => array(__('View Tag'), __('View Category')),
        'update_item' => array(__('Update Tag'), __('Update Category')),
        'add_new_item' => array(__('Add New Tag'), __('Add New Category')),
        'new_item_name' => array(__('New Tag Name'), __('New Category Name')),
        'separate_items_with_commas' => array(__('Separate tags with commas'), null),
        'add_or_remove_items' => array(__('Add or remove tags'), null),
        'choose_from_most_used' => array(__('Choose from the most used tags'), null),
        'not_found' => array(__('No tags found.'), __('No categories found.')),
        'no_terms' => array(__('No tags'), __('No categories')),
        'filter_by_item' => array(null, __('Filter by category')),
        'items_list_navigation' => array(__('Tags list navigation'), __('Categories list navigation')),
        'items_list' => array(__('Tags list'), __('Categories list')),
        /* translators: Tab heading when selecting from the most used terms. */
        'most_used' => array(_x('Most Used', 'tags'), _x('Most Used', 'categories')),
        'back_to_items' => array(__('← Go to Tags'), __('← Go to Categories')),
        'item_link' => array(_x('Tag Link', 'navigation link block title'), _x('Category Link', 'navigation link block description')),
        'item_link_description' => array(_x('A link to a tag.', 'navigation link block description'), _x('A link to a category.', 'navigation link block description')),
    );
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
    $taxonomy = $tax->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific taxonomy.
     *
     * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     *
     * Possible hook names include:
     *
     *  - `taxonomy_labels_category`
     *  - `taxonomy_labels_post_tag`
     *
     * @since 4.4.0
     *
     * @see get_taxonomy_labels() for the full list of taxonomy labels.
     *
     * @param object $labels Object with labels for the taxonomy as member variables.
     */
    $labels = apply_filters("taxonomy_labels_{$taxonomy}", $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 taxonomy labels out of a taxonomy object.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
 * @since 4.9.0 Added the `most_used` and `back_to_items` labels.
 * @since 5.7.0 Added the `filter_by_item` label.
 *
 * @param WP_Taxonomy $tax Taxonomy object.
 * @return object {
 *     Taxonomy labels object. The first default value is for non-hierarchical taxonomies
 *     (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 *     @type string $name                       General name for the taxonomy, usually plural. The same
 *                                              as and overridden by `$tax->label`. Default 'Tags'/'Categories'.
 *     @type string $singular_name              Name for one object of this taxonomy. Default 'Tag'/'Category'.
 *     @type string $search_items               Default 'Search Tags'/'Search Categories'.
 *     @type string $popular_items              This label is only used for non-hierarchical taxonomies.
 *                                              Default 'Popular Tags'.
 *     @type string $all_items                  Default 'All Tags'/'All Categories'.
 *     @type string $parent_item                This label is only used for hierarchical taxonomies. Default
 *                                              'Parent Category'.
 *     @type string $parent_item_colon          The same as `parent_item`, but with colon `:` in the end.
 *     @type string $edit_item                  Default 'Edit Tag'/'Edit Category'.
 *     @type string $view_item                  Default 'View Tag'/'View Category'.
 *     @type string $update_item                Default 'Update Tag'/'Update Category'.
 *     @type string $add_new_item               Default 'Add New Tag'/'Add New Category'.
 *     @type string $new_item_name              Default 'New Tag Name'/'New Category Name'.
 *     @type string $separate_items_with_commas This label is only used for non-hierarchical taxonomies. Default
 *                                              'Separate tags with commas', used in the meta box.
 *     @type string $add_or_remove_items        This label is only used for non-hierarchical taxonomies. Default
 *                                              'Add or remove tags', used in the meta box when JavaScript
 *                                              is disabled.
 *     @type string $choose_from_most_used      This label is only used on non-hierarchical taxonomies. Default
 *                                              'Choose from the most used tags', used in the meta box.
 *     @type string $not_found                  Default 'No tags found'/'No categories found', used in
 *                                              the meta box and taxonomy list table.
 *     @type string $no_terms                   Default 'No tags'/'No categories', used in the posts and media
 *                                              list tables.
 *     @type string $filter_by_item             This label is only used for hierarchical taxonomies. Default
 *                                              'Filter by category', used in the posts list table.
 *     @type string $items_list_navigation      Label for the table pagination hidden heading.
 *     @type string $items_list                 Label for the table hidden heading.
 *     @type string $most_used                  Title for the Most Used tab. Default 'Most Used'.
 *     @type string $back_to_items              Label displayed after a term has been updated.
 * }
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array(
        'name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')),
        'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')),
        'search_items' => array(__('Search Tags'), __('Search Categories')),
        'popular_items' => array(__('Popular Tags'), null),
        'all_items' => array(__('All Tags'), __('All Categories')),
        'parent_item' => array(null, __('Parent Category')),
        'parent_item_colon' => array(null, __('Parent Category:')),
        'edit_item' => array(__('Edit Tag'), __('Edit Category')),
        'view_item' => array(__('View Tag'), __('View Category')),
        'update_item' => array(__('Update Tag'), __('Update Category')),
        'add_new_item' => array(__('Add New Tag'), __('Add New Category')),
        'new_item_name' => array(__('New Tag Name'), __('New Category Name')),
        'separate_items_with_commas' => array(__('Separate tags with commas'), null),
        'add_or_remove_items' => array(__('Add or remove tags'), null),
        'choose_from_most_used' => array(__('Choose from the most used tags'), null),
        'not_found' => array(__('No tags found.'), __('No categories found.')),
        'no_terms' => array(__('No tags'), __('No categories')),
        'filter_by_item' => array(null, __('Filter by category')),
        'items_list_navigation' => array(__('Tags list navigation'), __('Categories list navigation')),
        'items_list' => array(__('Tags list'), __('Categories list')),
        /* translators: Tab heading when selecting from the most used terms. */
        'most_used' => array(_x('Most Used', 'tags'), _x('Most Used', 'categories')),
        'back_to_items' => array(__('← Go to Tags'), __('← Go to Categories')),
    );
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
    $taxonomy = $tax->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific taxonomy.
     *
     * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     *
     * @since 4.4.0
     *
     * @see get_taxonomy_labels() for the full list of taxonomy labels.
     *
     * @param object $labels Object with labels for the taxonomy as member variables.
     */
    $labels = apply_filters("taxonomy_labels_{$taxonomy}", $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.6

/**
 * Builds an object with all taxonomy labels out of a taxonomy object.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
 * @since 4.9.0 Added the `most_used` and `back_to_items` labels.
 *
 * @param WP_Taxonomy $tax Taxonomy object.
 * @return object {
 *     Taxonomy labels object. The first default value is for non-hierarchical taxonomies
 *     (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 *     @type string $name                       General name for the taxonomy, usually plural. The same
 *                                              as and overridden by `$tax->label`. Default 'Tags'/'Categories'.
 *     @type string $singular_name              Name for one object of this taxonomy. Default 'Tag'/'Category'.
 *     @type string $search_items               Default 'Search Tags'/'Search Categories'.
 *     @type string $popular_items              This label is only used for non-hierarchical taxonomies.
 *                                              Default 'Popular Tags'.
 *     @type string $all_items                  Default 'All Tags'/'All Categories'.
 *     @type string $parent_item                This label is only used for hierarchical taxonomies. Default
 *                                              'Parent Category'.
 *     @type string $parent_item_colon          The same as `parent_item`, but with colon `:` in the end.
 *     @type string $edit_item                  Default 'Edit Tag'/'Edit Category'.
 *     @type string $view_item                  Default 'View Tag'/'View Category'.
 *     @type string $update_item                Default 'Update Tag'/'Update Category'.
 *     @type string $add_new_item               Default 'Add New Tag'/'Add New Category'.
 *     @type string $new_item_name              Default 'New Tag Name'/'New Category Name'.
 *     @type string $separate_items_with_commas This label is only used for non-hierarchical taxonomies. Default
 *                                              'Separate tags with commas', used in the meta box.
 *     @type string $add_or_remove_items        This label is only used for non-hierarchical taxonomies. Default
 *                                              'Add or remove tags', used in the meta box when JavaScript
 *                                              is disabled.
 *     @type string $choose_from_most_used      This label is only used on non-hierarchical taxonomies. Default
 *                                              'Choose from the most used tags', used in the meta box.
 *     @type string $not_found                  Default 'No tags found'/'No categories found', used in
 *                                              the meta box and taxonomy list table.
 *     @type string $no_terms                   Default 'No tags'/'No categories', used in the posts and media
 *                                              list tables.
 *     @type string $items_list_navigation      Label for the table pagination hidden heading.
 *     @type string $items_list                 Label for the table hidden heading.
 *     @type string $most_used                  Title for the Most Used tab. Default 'Most Used'.
 *     @type string $back_to_items              Label displayed after a term has been updated.
 * }
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array(
        'name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')),
        'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')),
        'search_items' => array(__('Search Tags'), __('Search Categories')),
        'popular_items' => array(__('Popular Tags'), null),
        'all_items' => array(__('All Tags'), __('All Categories')),
        'parent_item' => array(null, __('Parent Category')),
        'parent_item_colon' => array(null, __('Parent Category:')),
        'edit_item' => array(__('Edit Tag'), __('Edit Category')),
        'view_item' => array(__('View Tag'), __('View Category')),
        'update_item' => array(__('Update Tag'), __('Update Category')),
        'add_new_item' => array(__('Add New Tag'), __('Add New Category')),
        'new_item_name' => array(__('New Tag Name'), __('New Category Name')),
        'separate_items_with_commas' => array(__('Separate tags with commas'), null),
        'add_or_remove_items' => array(__('Add or remove tags'), null),
        'choose_from_most_used' => array(__('Choose from the most used tags'), null),
        'not_found' => array(__('No tags found.'), __('No categories found.')),
        'no_terms' => array(__('No tags'), __('No categories')),
        'items_list_navigation' => array(__('Tags list navigation'), __('Categories list navigation')),
        'items_list' => array(__('Tags list'), __('Categories list')),
        /* translators: Tab heading when selecting from the most used terms. */
        'most_used' => array(_x('Most Used', 'tags'), _x('Most Used', 'categories')),
        'back_to_items' => array(__('← Go to Tags'), __('← Go to Categories')),
    );
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
    $taxonomy = $tax->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific taxonomy.
     *
     * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     *
     * @since 4.4.0
     *
     * @see get_taxonomy_labels() for the full list of taxonomy labels.
     *
     * @param object $labels Object with labels for the taxonomy as member variables.
     */
    $labels = apply_filters("taxonomy_labels_{$taxonomy}", $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 taxonomy labels out of a taxonomy object.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
 * @since 4.9.0 Added the `most_used` and `back_to_items` labels.
 *
 * @param WP_Taxonomy $tax Taxonomy object.
 * @return object {
 *     Taxonomy labels object. The first default value is for non-hierarchical taxonomies
 *     (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 *     @type string $name                       General name for the taxonomy, usually plural. The same
 *                                              as and overridden by `$tax->label`. Default 'Tags'/'Categories'.
 *     @type string $singular_name              Name for one object of this taxonomy. Default 'Tag'/'Category'.
 *     @type string $search_items               Default 'Search Tags'/'Search Categories'.
 *     @type string $popular_items              This label is only used for non-hierarchical taxonomies.
 *                                              Default 'Popular Tags'.
 *     @type string $all_items                  Default 'All Tags'/'All Categories'.
 *     @type string $parent_item                This label is only used for hierarchical taxonomies. Default
 *                                              'Parent Category'.
 *     @type string $parent_item_colon          The same as `parent_item`, but with colon `:` in the end.
 *     @type string $edit_item                  Default 'Edit Tag'/'Edit Category'.
 *     @type string $view_item                  Default 'View Tag'/'View Category'.
 *     @type string $update_item                Default 'Update Tag'/'Update Category'.
 *     @type string $add_new_item               Default 'Add New Tag'/'Add New Category'.
 *     @type string $new_item_name              Default 'New Tag Name'/'New Category Name'.
 *     @type string $separate_items_with_commas This label is only used for non-hierarchical taxonomies. Default
 *                                              'Separate tags with commas', used in the meta box.
 *     @type string $add_or_remove_items        This label is only used for non-hierarchical taxonomies. Default
 *                                              'Add or remove tags', used in the meta box when JavaScript
 *                                              is disabled.
 *     @type string $choose_from_most_used      This label is only used on non-hierarchical taxonomies. Default
 *                                              'Choose from the most used tags', used in the meta box.
 *     @type string $not_found                  Default 'No tags found'/'No categories found', used in
 *                                              the meta box and taxonomy list table.
 *     @type string $no_terms                   Default 'No tags'/'No categories', used in the posts and media
 *                                              list tables.
 *     @type string $items_list_navigation      Label for the table pagination hidden heading.
 *     @type string $items_list                 Label for the table hidden heading.
 *     @type string $most_used                  Title for the Most Used tab. Default 'Most Used'.
 *     @type string $back_to_items              Label displayed after a term has been updated.
 * }
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array(
        'name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')),
        'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')),
        'search_items' => array(__('Search Tags'), __('Search Categories')),
        'popular_items' => array(__('Popular Tags'), null),
        'all_items' => array(__('All Tags'), __('All Categories')),
        'parent_item' => array(null, __('Parent Category')),
        'parent_item_colon' => array(null, __('Parent Category:')),
        'edit_item' => array(__('Edit Tag'), __('Edit Category')),
        'view_item' => array(__('View Tag'), __('View Category')),
        'update_item' => array(__('Update Tag'), __('Update Category')),
        'add_new_item' => array(__('Add New Tag'), __('Add New Category')),
        'new_item_name' => array(__('New Tag Name'), __('New Category Name')),
        'separate_items_with_commas' => array(__('Separate tags with commas'), null),
        'add_or_remove_items' => array(__('Add or remove tags'), null),
        'choose_from_most_used' => array(__('Choose from the most used tags'), null),
        'not_found' => array(__('No tags found.'), __('No categories found.')),
        'no_terms' => array(__('No tags'), __('No categories')),
        'items_list_navigation' => array(__('Tags list navigation'), __('Categories list navigation')),
        'items_list' => array(__('Tags list'), __('Categories list')),
        /* translators: Tab heading when selecting from the most used terms. */
        'most_used' => array(_x('Most Used', 'tags'), _x('Most Used', 'categories')),
        'back_to_items' => array(__('← Back to Tags'), __('← Back to Categories')),
    );
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
    $taxonomy = $tax->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific taxonomy.
     *
     * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     *
     * @since 4.4.0
     *
     * @see get_taxonomy_labels() for the full list of taxonomy labels.
     *
     * @param object $labels Object with labels for the taxonomy as member variables.
     */
    $labels = apply_filters("taxonomy_labels_{$taxonomy}", $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.9

/**
 * Builds an object with all taxonomy labels out of a taxonomy object.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
 * @since 4.9.0 Added the `most_used` and `back_to_items` labels.
 *
 * @param WP_Taxonomy $tax Taxonomy object.
 * @return object {
 *     Taxonomy labels object. The first default value is for non-hierarchical taxonomies
 *     (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 *     @type string $name                       General name for the taxonomy, usually plural. The same
 *                                              as and overridden by `$tax->label`. Default 'Tags'/'Categories'.
 *     @type string $singular_name              Name for one object of this taxonomy. Default 'Tag'/'Category'.
 *     @type string $search_items               Default 'Search Tags'/'Search Categories'.
 *     @type string $popular_items              This label is only used for non-hierarchical taxonomies.
 *                                              Default 'Popular Tags'.
 *     @type string $all_items                  Default 'All Tags'/'All Categories'.
 *     @type string $parent_item                This label is only used for hierarchical taxonomies. Default
 *                                              'Parent Category'.
 *     @type string $parent_item_colon          The same as `parent_item`, but with colon `:` in the end.
 *     @type string $edit_item                  Default 'Edit Tag'/'Edit Category'.
 *     @type string $view_item                  Default 'View Tag'/'View Category'.
 *     @type string $update_item                Default 'Update Tag'/'Update Category'.
 *     @type string $add_new_item               Default 'Add New Tag'/'Add New Category'.
 *     @type string $new_item_name              Default 'New Tag Name'/'New Category Name'.
 *     @type string $separate_items_with_commas This label is only used for non-hierarchical taxonomies. Default
 *                                              'Separate tags with commas', used in the meta box.
 *     @type string $add_or_remove_items        This label is only used for non-hierarchical taxonomies. Default
 *                                              'Add or remove tags', used in the meta box when JavaScript
 *                                              is disabled.
 *     @type string $choose_from_most_used      This label is only used on non-hierarchical taxonomies. Default
 *                                              'Choose from the most used tags', used in the meta box.
 *     @type string $not_found                  Default 'No tags found'/'No categories found', used in
 *                                              the meta box and taxonomy list table.
 *     @type string $no_terms                   Default 'No tags'/'No categories', used in the posts and media
 *                                              list tables.
 *     @type string $items_list_navigation      Label for the table pagination hidden heading.
 *     @type string $items_list                 Label for the table hidden heading.
 *     @type string $most_used                  Title for the Most Used tab. Default 'Most Used'.
 *     @type string $back_to_items              Label displayed after a term has been updated.
 * }
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array(
        'name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')),
        'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')),
        'search_items' => array(__('Search Tags'), __('Search Categories')),
        'popular_items' => array(__('Popular Tags'), null),
        'all_items' => array(__('All Tags'), __('All Categories')),
        'parent_item' => array(null, __('Parent Category')),
        'parent_item_colon' => array(null, __('Parent Category:')),
        'edit_item' => array(__('Edit Tag'), __('Edit Category')),
        'view_item' => array(__('View Tag'), __('View Category')),
        'update_item' => array(__('Update Tag'), __('Update Category')),
        'add_new_item' => array(__('Add New Tag'), __('Add New Category')),
        'new_item_name' => array(__('New Tag Name'), __('New Category Name')),
        'separate_items_with_commas' => array(__('Separate tags with commas'), null),
        'add_or_remove_items' => array(__('Add or remove tags'), null),
        'choose_from_most_used' => array(__('Choose from the most used tags'), null),
        'not_found' => array(__('No tags found.'), __('No categories found.')),
        'no_terms' => array(__('No tags'), __('No categories')),
        'items_list_navigation' => array(__('Tags list navigation'), __('Categories list navigation')),
        'items_list' => array(__('Tags list'), __('Categories list')),
        /* translators: Tab heading when selecting from the most used terms */
        'most_used' => array(_x('Most Used', 'tags'), _x('Most Used', 'categories')),
        'back_to_items' => array(__('← Back to Tags'), __('← Back to Categories')),
    );
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
    $taxonomy = $tax->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific taxonomy.
     *
     * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     *
     * @since 4.4.0
     *
     * @see get_taxonomy_labels() for the full list of taxonomy labels.
     *
     * @param object $labels Object with labels for the taxonomy as member variables.
     */
    $labels = apply_filters("taxonomy_labels_{$taxonomy}", $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 taxonomy labels out of a taxonomy object
 *
 * Accepted keys of the label array in the taxonomy object:
 *
 * - name - general name for the taxonomy, usually plural. The same as and overridden by $tax->label. Default is Tags/Categories
 * - singular_name - name for one object of this taxonomy. Default is Tag/Category
 * - search_items - Default is Search Tags/Search Categories
 * - popular_items - This string isn't used on hierarchical taxonomies. Default is Popular Tags
 * - all_items - Default is All Tags/All Categories
 * - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
 * - parent_item_colon - The same as `parent_item`, but with colon `:` in the end
 * - edit_item - Default is Edit Tag/Edit Category
 * - view_item - Default is View Tag/View Category
 * - update_item - Default is Update Tag/Update Category
 * - add_new_item - Default is Add New Tag/Add New Category
 * - new_item_name - Default is New Tag Name/New Category Name
 * - separate_items_with_commas - This string isn't used on hierarchical taxonomies. Default is "Separate tags with commas", used in the meta box.
 * - add_or_remove_items - This string isn't used on hierarchical taxonomies. Default is "Add or remove tags", used in the meta box when JavaScript is disabled.
 * - choose_from_most_used - This string isn't used on hierarchical taxonomies. Default is "Choose from the most used tags", used in the meta box.
 * - not_found - Default is "No tags found"/"No categories found", used in the meta box and taxonomy list table.
 * - no_terms - Default is "No tags"/"No categories", used in the posts and media list tables.
 * - 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 taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 * @todo Better documentation for the labels array.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
 *
 * @param WP_Taxonomy $tax Taxonomy object.
 * @return object object with all the labels as member variables.
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array('name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')), 'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')), 'search_items' => array(__('Search Tags'), __('Search Categories')), 'popular_items' => array(__('Popular Tags'), null), 'all_items' => array(__('All Tags'), __('All Categories')), 'parent_item' => array(null, __('Parent Category')), 'parent_item_colon' => array(null, __('Parent Category:')), 'edit_item' => array(__('Edit Tag'), __('Edit Category')), 'view_item' => array(__('View Tag'), __('View Category')), 'update_item' => array(__('Update Tag'), __('Update Category')), 'add_new_item' => array(__('Add New Tag'), __('Add New Category')), 'new_item_name' => array(__('New Tag Name'), __('New Category Name')), 'separate_items_with_commas' => array(__('Separate tags with commas'), null), 'add_or_remove_items' => array(__('Add or remove tags'), null), 'choose_from_most_used' => array(__('Choose from the most used tags'), null), 'not_found' => array(__('No tags found.'), __('No categories found.')), 'no_terms' => array(__('No tags'), __('No categories')), 'items_list_navigation' => array(__('Tags list navigation'), __('Categories list navigation')), 'items_list' => array(__('Tags list'), __('Categories list')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
    $taxonomy = $tax->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific taxonomy.
     *
     * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     *
     * @since 4.4.0
     *
     * @see get_taxonomy_labels() for the full list of taxonomy labels.
     *
     * @param object $labels Object with labels for the taxonomy as member variables.
     */
    $labels = apply_filters("taxonomy_labels_{$taxonomy}", $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 taxonomy labels out of a taxonomy object
 *
 * Accepted keys of the label array in the taxonomy object:
 *
 * - name - general name for the taxonomy, usually plural. The same as and overridden by $tax->label. Default is Tags/Categories
 * - singular_name - name for one object of this taxonomy. Default is Tag/Category
 * - search_items - Default is Search Tags/Search Categories
 * - popular_items - This string isn't used on hierarchical taxonomies. Default is Popular Tags
 * - all_items - Default is All Tags/All Categories
 * - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
 * - parent_item_colon - The same as `parent_item`, but with colon `:` in the end
 * - edit_item - Default is Edit Tag/Edit Category
 * - view_item - Default is View Tag/View Category
 * - update_item - Default is Update Tag/Update Category
 * - add_new_item - Default is Add New Tag/Add New Category
 * - new_item_name - Default is New Tag Name/New Category Name
 * - separate_items_with_commas - This string isn't used on hierarchical taxonomies. Default is "Separate tags with commas", used in the meta box.
 * - add_or_remove_items - This string isn't used on hierarchical taxonomies. Default is "Add or remove tags", used in the meta box when JavaScript is disabled.
 * - choose_from_most_used - This string isn't used on hierarchical taxonomies. Default is "Choose from the most used tags", used in the meta box.
 * - not_found - Default is "No tags found"/"No categories found", used in the meta box and taxonomy list table.
 * - no_terms - Default is "No tags"/"No categories", used in the posts and media list tables.
 * - 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 taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 * @todo Better documentation for the labels array.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
 *
 * @param object $tax Taxonomy object.
 * @return object object with all the labels as member variables.
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array('name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')), 'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')), 'search_items' => array(__('Search Tags'), __('Search Categories')), 'popular_items' => array(__('Popular Tags'), null), 'all_items' => array(__('All Tags'), __('All Categories')), 'parent_item' => array(null, __('Parent Category')), 'parent_item_colon' => array(null, __('Parent Category:')), 'edit_item' => array(__('Edit Tag'), __('Edit Category')), 'view_item' => array(__('View Tag'), __('View Category')), 'update_item' => array(__('Update Tag'), __('Update Category')), 'add_new_item' => array(__('Add New Tag'), __('Add New Category')), 'new_item_name' => array(__('New Tag Name'), __('New Category Name')), 'separate_items_with_commas' => array(__('Separate tags with commas'), null), 'add_or_remove_items' => array(__('Add or remove tags'), null), 'choose_from_most_used' => array(__('Choose from the most used tags'), null), 'not_found' => array(__('No tags found.'), __('No categories found.')), 'no_terms' => array(__('No tags'), __('No categories')), 'items_list_navigation' => array(__('Tags list navigation'), __('Categories list navigation')), 'items_list' => array(__('Tags list'), __('Categories list')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
    $taxonomy = $tax->name;
    $default_labels = clone $labels;
    /**
     * Filters the labels of a specific taxonomy.
     *
     * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     *
     * @since 4.4.0
     *
     * @see get_taxonomy_labels() for the full list of taxonomy labels.
     *
     * @param object $labels Object with labels for the taxonomy as member variables.
     */
    $labels = apply_filters("taxonomy_labels_{$taxonomy}", $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

/**
 * Builds an object with all taxonomy labels out of a taxonomy object
 *
 * Accepted keys of the label array in the taxonomy object:
 *
 * - name - general name for the taxonomy, usually plural. The same as and overridden by $tax->label. Default is Tags/Categories
 * - singular_name - name for one object of this taxonomy. Default is Tag/Category
 * - search_items - Default is Search Tags/Search Categories
 * - popular_items - This string isn't used on hierarchical taxonomies. Default is Popular Tags
 * - all_items - Default is All Tags/All Categories
 * - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
 * - parent_item_colon - The same as `parent_item`, but with colon `:` in the end
 * - edit_item - Default is Edit Tag/Edit Category
 * - view_item - Default is View Tag/View Category
 * - update_item - Default is Update Tag/Update Category
 * - add_new_item - Default is Add New Tag/Add New Category
 * - new_item_name - Default is New Tag Name/New Category Name
 * - separate_items_with_commas - This string isn't used on hierarchical taxonomies. Default is "Separate tags with commas", used in the meta box.
 * - add_or_remove_items - This string isn't used on hierarchical taxonomies. Default is "Add or remove tags", used in the meta box when JavaScript is disabled.
 * - choose_from_most_used - This string isn't used on hierarchical taxonomies. Default is "Choose from the most used tags", used in the meta box.
 * - not_found - Default is "No tags found"/"No categories found", used in the meta box and taxonomy list table.
 * - no_terms - Default is "No tags"/"No categories", used in the posts and media list tables.
 * - 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 taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 * @todo Better documentation for the labels array.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
 *
 * @param object $tax Taxonomy object.
 * @return object object with all the labels as member variables.
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array('name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')), 'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')), 'search_items' => array(__('Search Tags'), __('Search Categories')), 'popular_items' => array(__('Popular Tags'), null), 'all_items' => array(__('All Tags'), __('All Categories')), 'parent_item' => array(null, __('Parent Category')), 'parent_item_colon' => array(null, __('Parent Category:')), 'edit_item' => array(__('Edit Tag'), __('Edit Category')), 'view_item' => array(__('View Tag'), __('View Category')), 'update_item' => array(__('Update Tag'), __('Update Category')), 'add_new_item' => array(__('Add New Tag'), __('Add New Category')), 'new_item_name' => array(__('New Tag Name'), __('New Category Name')), 'separate_items_with_commas' => array(__('Separate tags with commas'), null), 'add_or_remove_items' => array(__('Add or remove tags'), null), 'choose_from_most_used' => array(__('Choose from the most used tags'), null), 'not_found' => array(__('No tags found.'), __('No categories found.')), 'no_terms' => array(__('No tags'), __('No categories')), 'items_list_navigation' => array(__('Tags list navigation'), __('Categories list navigation')), 'items_list' => array(__('Tags list'), __('Categories list')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    $labels = _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
    $taxonomy = $tax->name;
    $default_labels = clone $labels;
    /**
     * Filter the labels of a specific taxonomy.
     *
     * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     *
     * @since 4.4.0
     *
     * @see get_taxonomy_labels() for the full list of taxonomy labels.
     *
     * @param object $labels Object with labels for the taxonomy as member variables.
     */
    $labels = apply_filters("taxonomy_labels_{$taxonomy}", $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

/**
 * Builds an object with all taxonomy labels out of a taxonomy object
 *
 * Accepted keys of the label array in the taxonomy object:
 *
 * - name - general name for the taxonomy, usually plural. The same as and overridden by $tax->label. Default is Tags/Categories
 * - singular_name - name for one object of this taxonomy. Default is Tag/Category
 * - search_items - Default is Search Tags/Search Categories
 * - popular_items - This string isn't used on hierarchical taxonomies. Default is Popular Tags
 * - all_items - Default is All Tags/All Categories
 * - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
 * - parent_item_colon - The same as `parent_item`, but with colon `:` in the end
 * - edit_item - Default is Edit Tag/Edit Category
 * - view_item - Default is View Tag/View Category
 * - update_item - Default is Update Tag/Update Category
 * - add_new_item - Default is Add New Tag/Add New Category
 * - new_item_name - Default is New Tag Name/New Category Name
 * - separate_items_with_commas - This string isn't used on hierarchical taxonomies. Default is "Separate tags with commas", used in the meta box.
 * - add_or_remove_items - This string isn't used on hierarchical taxonomies. Default is "Add or remove tags", used in the meta box when JavaScript is disabled.
 * - choose_from_most_used - This string isn't used on hierarchical taxonomies. Default is "Choose from the most used tags", used in the meta box.
 * - not_found - Default is "No tags found"/"No categories found", used in the meta box and taxonomy list table.
 * - no_terms - Default is "No tags"/"No categories", used in the posts and media list tables.
 *
 * Above, the first default value is for non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 * @todo Better documentation for the labels array.
 *
 * @since 3.0.0
 * @since 4.3.0 Added the `no_terms` label.
 *
 * @param object $tax Taxonomy object.
 * @return object object with all the labels as member variables.
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array('name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')), 'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')), 'search_items' => array(__('Search Tags'), __('Search Categories')), 'popular_items' => array(__('Popular Tags'), null), 'all_items' => array(__('All Tags'), __('All Categories')), 'parent_item' => array(null, __('Parent Category')), 'parent_item_colon' => array(null, __('Parent Category:')), 'edit_item' => array(__('Edit Tag'), __('Edit Category')), 'view_item' => array(__('View Tag'), __('View Category')), 'update_item' => array(__('Update Tag'), __('Update Category')), 'add_new_item' => array(__('Add New Tag'), __('Add New Category')), 'new_item_name' => array(__('New Tag Name'), __('New Category Name')), 'separate_items_with_commas' => array(__('Separate tags with commas'), null), 'add_or_remove_items' => array(__('Add or remove tags'), null), 'choose_from_most_used' => array(__('Choose from the most used tags'), null), 'not_found' => array(__('No tags found.'), __('No categories found.')), 'no_terms' => array(__('No tags'), __('No categories')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    return _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
}

WordPress Version: 4.2

/**
 * Builds an object with all taxonomy labels out of a taxonomy object
 *
 * Accepted keys of the label array in the taxonomy object:
 *
 * - name - general name for the taxonomy, usually plural. The same as and overridden by $tax->label. Default is Tags/Categories
 * - singular_name - name for one object of this taxonomy. Default is Tag/Category
 * - search_items - Default is Search Tags/Search Categories
 * - popular_items - This string isn't used on hierarchical taxonomies. Default is Popular Tags
 * - all_items - Default is All Tags/All Categories
 * - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
 * - parent_item_colon - The same as `parent_item`, but with colon `:` in the end
 * - edit_item - Default is Edit Tag/Edit Category
 * - view_item - Default is View Tag/View Category
 * - update_item - Default is Update Tag/Update Category
 * - add_new_item - Default is Add New Tag/Add New Category
 * - new_item_name - Default is New Tag Name/New Category Name
 * - separate_items_with_commas - This string isn't used on hierarchical taxonomies. Default is "Separate tags with commas", used in the meta box.
 * - add_or_remove_items - This string isn't used on hierarchical taxonomies. Default is "Add or remove tags", used in the meta box when JavaScript is disabled.
 * - choose_from_most_used - This string isn't used on hierarchical taxonomies. Default is "Choose from the most used tags", used in the meta box.
 * - not_found - Default is "No tags found"/"No categories found", used in the meta box and taxonomy list table.
 *
 * Above, the first default value is for non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 * @since 3.0.0
 * @param object $tax Taxonomy object
 * @return object object with all the labels as member variables
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array('name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')), 'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')), 'search_items' => array(__('Search Tags'), __('Search Categories')), 'popular_items' => array(__('Popular Tags'), null), 'all_items' => array(__('All Tags'), __('All Categories')), 'parent_item' => array(null, __('Parent Category')), 'parent_item_colon' => array(null, __('Parent Category:')), 'edit_item' => array(__('Edit Tag'), __('Edit Category')), 'view_item' => array(__('View Tag'), __('View Category')), 'update_item' => array(__('Update Tag'), __('Update Category')), 'add_new_item' => array(__('Add New Tag'), __('Add New Category')), 'new_item_name' => array(__('New Tag Name'), __('New Category Name')), 'separate_items_with_commas' => array(__('Separate tags with commas'), null), 'add_or_remove_items' => array(__('Add or remove tags'), null), 'choose_from_most_used' => array(__('Choose from the most used tags'), null), 'not_found' => array(__('No tags found.'), __('No categories found.')));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    return _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
}

WordPress Version: 4.1

/**
 * Builds an object with all taxonomy labels out of a taxonomy object
 *
 * Accepted keys of the label array in the taxonomy object:
 *
 * - name - general name for the taxonomy, usually plural. The same as and overridden by $tax->label. Default is Tags/Categories
 * - singular_name - name for one object of this taxonomy. Default is Tag/Category
 * - search_items - Default is Search Tags/Search Categories
 * - popular_items - This string isn't used on hierarchical taxonomies. Default is Popular Tags
 * - all_items - Default is All Tags/All Categories
 * - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
 * - parent_item_colon - The same as `parent_item`, but with colon `:` in the end
 * - edit_item - Default is Edit Tag/Edit Category
 * - view_item - Default is View Tag/View Category
 * - update_item - Default is Update Tag/Update Category
 * - add_new_item - Default is Add New Tag/Add New Category
 * - new_item_name - Default is New Tag Name/New Category Name
 * - separate_items_with_commas - This string isn't used on hierarchical taxonomies. Default is "Separate tags with commas", used in the meta box.
 * - add_or_remove_items - This string isn't used on hierarchical taxonomies. Default is "Add or remove tags", used in the meta box when JavaScript is disabled.
 * - choose_from_most_used - This string isn't used on hierarchical taxonomies. Default is "Choose from the most used tags", used in the meta box.
 * - not_found - This string isn't used on hierarchical taxonomies. Default is "No tags found", used in the meta box.
 *
 * Above, the first default value is for non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 * @since 3.0.0
 * @param object $tax Taxonomy object
 * @return object object with all the labels as member variables
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array('name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')), 'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')), 'search_items' => array(__('Search Tags'), __('Search Categories')), 'popular_items' => array(__('Popular Tags'), null), 'all_items' => array(__('All Tags'), __('All Categories')), 'parent_item' => array(null, __('Parent Category')), 'parent_item_colon' => array(null, __('Parent Category:')), 'edit_item' => array(__('Edit Tag'), __('Edit Category')), 'view_item' => array(__('View Tag'), __('View Category')), 'update_item' => array(__('Update Tag'), __('Update Category')), 'add_new_item' => array(__('Add New Tag'), __('Add New Category')), 'new_item_name' => array(__('New Tag Name'), __('New Category Name')), 'separate_items_with_commas' => array(__('Separate tags with commas'), null), 'add_or_remove_items' => array(__('Add or remove tags'), null), 'choose_from_most_used' => array(__('Choose from the most used tags'), null), 'not_found' => array(__('No tags found.'), null));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    return _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
}

WordPress Version: 3.7

/**
 * Builds an object with all taxonomy labels out of a taxonomy object
 *
 * Accepted keys of the label array in the taxonomy object:
 * - name - general name for the taxonomy, usually plural. The same as and overridden by $tax->label. Default is Tags/Categories
 * - singular_name - name for one object of this taxonomy. Default is Tag/Category
 * - search_items - Default is Search Tags/Search Categories
 * - popular_items - This string isn't used on hierarchical taxonomies. Default is Popular Tags
 * - all_items - Default is All Tags/All Categories
 * - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
 * - parent_item_colon - The same as <code>parent_item</code>, but with colon <code>:</code> in the end
 * - edit_item - Default is Edit Tag/Edit Category
 * - view_item - Default is View Tag/View Category
 * - update_item - Default is Update Tag/Update Category
 * - add_new_item - Default is Add New Tag/Add New Category
 * - new_item_name - Default is New Tag Name/New Category Name
 * - separate_items_with_commas - This string isn't used on hierarchical taxonomies. Default is "Separate tags with commas", used in the meta box.
 * - add_or_remove_items - This string isn't used on hierarchical taxonomies. Default is "Add or remove tags", used in the meta box when JavaScript is disabled.
 * - choose_from_most_used - This string isn't used on hierarchical taxonomies. Default is "Choose from the most used tags", used in the meta box.
 * - not_found - This string isn't used on hierarchical taxonomies. Default is "No tags found", used in the meta box.
 *
 * Above, the first default value is for non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
 *
 * @since 3.0.0
 * @param object $tax Taxonomy object
 * @return object object with all the labels as member variables
 */
function get_taxonomy_labels($tax)
{
    $tax->labels = (array) $tax->labels;
    if (isset($tax->helps) && empty($tax->labels['separate_items_with_commas'])) {
        $tax->labels['separate_items_with_commas'] = $tax->helps;
    }
    if (isset($tax->no_tagcloud) && empty($tax->labels['not_found'])) {
        $tax->labels['not_found'] = $tax->no_tagcloud;
    }
    $nohier_vs_hier_defaults = array('name' => array(_x('Tags', 'taxonomy general name'), _x('Categories', 'taxonomy general name')), 'singular_name' => array(_x('Tag', 'taxonomy singular name'), _x('Category', 'taxonomy singular name')), 'search_items' => array(__('Search Tags'), __('Search Categories')), 'popular_items' => array(__('Popular Tags'), null), 'all_items' => array(__('All Tags'), __('All Categories')), 'parent_item' => array(null, __('Parent Category')), 'parent_item_colon' => array(null, __('Parent Category:')), 'edit_item' => array(__('Edit Tag'), __('Edit Category')), 'view_item' => array(__('View Tag'), __('View Category')), 'update_item' => array(__('Update Tag'), __('Update Category')), 'add_new_item' => array(__('Add New Tag'), __('Add New Category')), 'new_item_name' => array(__('New Tag Name'), __('New Category Name')), 'separate_items_with_commas' => array(__('Separate tags with commas'), null), 'add_or_remove_items' => array(__('Add or remove tags'), null), 'choose_from_most_used' => array(__('Choose from the most used tags'), null), 'not_found' => array(__('No tags found.'), null));
    $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
    return _get_custom_object_labels($tax, $nohier_vs_hier_defaults);
}