Index: wp-includes/taxonomy.php
===================================================================
--- wp-includes/taxonomy.php (revision 14575)
+++ wp-includes/taxonomy.php (working copy)
@@ -18,8 +18,6 @@
register_taxonomy( 'category', 'post', array(
'hierarchical' => true,
'update_count_callback' => '_update_post_term_count',
- 'label' => __( 'Categories' ),
- 'singular_label' => __( 'Category' ),
'query_var' => false,
'rewrite' => false,
'public' => true,
@@ -30,8 +28,6 @@
register_taxonomy( 'post_tag', 'post', array(
'hierarchical' => false,
'update_count_callback' => '_update_post_term_count',
- 'label' => __( 'Post Tags' ),
- 'singular_label' => __( 'Post Tag' ),
'query_var' => false,
'rewrite' => false,
'public' => true,
@@ -41,8 +37,10 @@
register_taxonomy( 'nav_menu', 'nav_menu_item', array(
'hierarchical' => false,
- 'label' => __( 'Navigation Menus' ),
- 'singular_label' => __( 'Navigation Menu' ),
+ 'labels' => array(
+ 'name' => __( 'Navigation Menus' ),
+ 'singular_name' => __( 'Navigation Menu' ),
+ ),
'query_var' => false,
'rewrite' => false,
'show_ui' => false,
@@ -51,7 +49,10 @@
register_taxonomy( 'link_category', 'link', array(
'hierarchical' => false,
- 'label' => __( 'Categories' ),
+ 'labels' => array(
+ 'name' => __( 'Categories' ),
+ 'singular_name' => __( 'Category' ),
+ ),
'query_var' => false,
'rewrite' => false,
'public' => false,
@@ -230,6 +231,8 @@
*
* show_tagcloud - false to prevent the taxonomy being listed in the Tag Cloud Widget;
* defaults to show_ui which defalts to public.
+ *
+ * labels - An array of labels for this taxonomy. You can see accepted values in {@link get_taxonomy_labels()}. By default tag labels are used for non-hierarchical types and category labels for hierarchical ones.
*
* @package WordPress
* @subpackage Taxonomy
@@ -254,9 +257,9 @@
'query_var' => $taxonomy,
'public' => true,
'show_ui' => null,
- 'label' => null,
'show_tagcloud' => null,
- '_builtin' => false
+ '_builtin' => false,
+ 'labels' => array(),
);
$args = wp_parse_args($args, $defaults);
@@ -282,9 +285,6 @@
if ( is_null($args['show_tagcloud']) )
$args['show_tagcloud'] = $args['show_ui'];
- if ( is_null($args['label'] ) )
- $args['label'] = $taxonomy;
-
foreach ( array('manage_cap', 'edit_cap', 'delete_cap') as $cap ) {
if ( empty($args[$cap]) )
$args[$cap] = 'manage_categories';
@@ -292,11 +292,15 @@
if ( empty($args['assign_cap']) )
$args['assign_cap'] = 'edit_posts';
- if ( empty($args['singular_label']) )
- $args['singular_label'] = $args['label'];
-
$args['name'] = $taxonomy;
$args['object_type'] = (array) $object_type;
+ $args['labels'] = get_taxonomy_labels( (object) $args );
+
+ // we keep these two only for backwards compatibility
+ // TODO: remove in 3.1
+ $args['label'] = $args['labels']->name;
+ $args['singular_label'] = $args['labels']->singular_name;
+
$wp_taxonomies[$taxonomy] = (object) $args;
// register callback handling for metabox
@@ -304,6 +308,47 @@
}
/**
+ * 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. Default is Post Tags/Categories
+ * - singular_name - name for one object of this taxonomy. Default is Post Tag/Category
+ * - search_items - Default is Search Tags/Search Categories
+ * - popular_items - Default is Popular Tags/Popular Categories
+ * - 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
+ * - 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
+ *
+ * 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 ) {
+ $nohier_vs_hier_defaults = array(
+ 'name' => array( _x( 'Post Tags', 'taxonomy general name' ), _x( 'Categories', 'taxonomy general name' ) ),
+ 'singular_name' => array( _x( 'Post Tag', 'taxonomy singular name' ), _x( 'Category', 'taxonomy singular name' ) ),
+ 'search_items' => array( __( 'Search Tags' ), __( 'Search Categories' ) ),
+ 'popular_items' => array( __( 'Popular Tags' ), __( 'Popular Category' ) ),
+ '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' ) ),
+ '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' ) ),
+ );
+
+ return _get_custom_object_labels( $tax, $nohier_vs_hier_defaults );
+}
+
+/**
* Add an already registered taxonomy to an object type.
*
* @package WordPress
@@ -2608,6 +2653,3 @@
return false;
}
-
-
-?>
Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php (revision 14575)
+++ wp-includes/post.php (working copy)
@@ -40,7 +40,9 @@
) );
register_post_type( 'attachment', array(
- 'label' => __( 'Media' ),
+ 'labels' => array(
+ 'name' => __( 'Media' ),
+ ),
'public' => true,
'show_ui' => false,
'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
@@ -53,8 +55,10 @@
) );
register_post_type( 'revision', array(
- 'label' => __( 'Revisions' ),
- 'singular_label' => __( 'Revision' ),
+ 'labels' => array(
+ 'name' => __( 'Revisions' ),
+ 'singular_name' => __( 'Revision' ),
+ ),
'public' => false,
'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
'_edit_link' => 'revision.php?revision=%d', /* internal use only. don't use this when registering your own post type. */
@@ -65,8 +69,10 @@
) );
register_post_type( 'nav_menu_item', array(
- 'label' => __( 'Navigation Menu Items' ),
- 'singular_label' => __( 'Navigation Menu Item' ),
+ 'labels' => array(
+ 'name' => __( 'Navigation Menu Items' ),
+ 'singular_name' => __( 'Navigation Menu Item' ),
+ ),
'public' => false,
'show_ui' => false,
'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
@@ -907,7 +913,7 @@
* - 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 - This string isn't used on non-hierarchical types. In hierarchical ones the default is Parent Page:
+ * - parent_item - This string isn't used on non-hierarchical types. In hierarchical ones the default is Parent 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.)
*
@@ -929,22 +935,35 @@
'not_found' => array( __('No posts found'), __('No pages found') ),
'not_found_in_trash' => array( __('No posts found in Trash'), __('No pages found in Trash') ),
'view' => array( __('View Post'), __('View Page') ),
- 'parent' => array( null, __('Parent Page:') )
+ 'parent_item' => array( null, __('Parent Page:') )
);
+ return _get_custom_object_labels( $post_type_object, $nohier_vs_hier_defaults );
+}
+
+/**
+ * Builds an object with custom-something object (post type, taxonomy) labels out of a custom-something object
+ *
+ * @access private
+ */
+function _get_custom_object_labels( $object, $nohier_vs_hier_defaults ) {
// try to get missing (singular_)?name from older style (singular_)?label member variables
// we keep that for backwards compatibility
// TODO: remove in 3.1
- if ( !isset( $post_type_object->labels['name'] ) && isset( $post_type_object->label ) ) {
- $post_type_object->labels['name'] = $post_type_object->label;
+ if ( !isset( $object->labels['name'] ) && isset( $object->label ) ) {
+ $object->labels['name'] = $object->label;
}
- if ( !isset( $post_type_object->labels['singular_name'] ) && isset( $post_type_object->singular_label ) ) {
- $post_type_object->labels['singular_name'] = $post_type_object->singular_label;
+ if ( !isset( $object->labels['singular_name'] ) && isset( $object->singular_label ) ) {
+ $object->labels['singular_name'] = $object->singular_label;
}
- $defaults = array_map( create_function( '$x', $post_type_object->hierarchical? 'return $x[1];' : 'return $x[0];' ), $nohier_vs_hier_defaults );
- $labels = array_merge( $defaults, $post_type_object->labels );
- return (object)$labels;
+ if ( !isset( $object->labels['singular_name'] ) && isset( $object->labels['name'] ) ) {
+ $object->labels['singular_name'] = $object->labels['name'];
+ }
+
+ $defaults = array_map( create_function( '$x', $object->hierarchical? 'return $x[1];' : 'return $x[0];' ), $nohier_vs_hier_defaults );
+ $labels = array_merge( $defaults, $object->labels );
+ return (object)$labels;
}
/**
Index: wp-includes/default-widgets.php
===================================================================
--- wp-includes/default-widgets.php (revision 14575)
+++ wp-includes/default-widgets.php (working copy)
@@ -1001,7 +1001,7 @@
$title = __('Tags');
} else {
$tax = get_taxonomy($current_taxonomy);
- $title = $tax->label;
+ $title = $tax->labels->name;
}
}
$title = apply_filters('widget_title', $title, $instance, $this->id_base);
@@ -1030,10 +1030,10 @@
- - $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => sprintf( __('— Parent %s —'), $tax->singular_label ), 'tab_index' => 3 ) ); ?> - + + + + $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— ' . $tax->labels->parent_item . ' —', 'tab_index' => 3 ) ); ?> +
Index: wp-admin/includes/template.php =================================================================== --- wp-admin/includes/template.php (revision 14575) +++ wp-admin/includes/template.php (working copy) @@ -63,7 +63,7 @@- singular_label ); ?> + labels->update_item; ?> @@ -976,7 +976,7 @@ - label) ?> + labels->name) ?> @@ -1040,7 +1040,7 @@ @@ -1566,7 +1566,7 @@ $attributes = 'class="post-title page-title column-title"' . $style; $edit_link = get_edit_post_link( $page->ID ); ?> -
- + - +