diff --git a/src/wp-includes/taxonomy.php b/src/wp-includes/taxonomy.php index 2f8cef9a8c..71c422d60b 100644 --- a/src/wp-includes/taxonomy.php +++ b/src/wp-includes/taxonomy.php @@ -345,9 +345,9 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) { ); $args = wp_parse_args( $args, $defaults ); - if ( strlen( $taxonomy ) > 32 ) { - _doing_it_wrong( __FUNCTION__, __( 'Taxonomies cannot exceed 32 characters in length' ), '4.0' ); - return new WP_Error( 'taxonomy_too_long', __( 'Taxonomies cannot exceed 32 characters in length' ) ); + if ( empty( $taxonomy ) || strlen( $taxonomy ) > 32 ) { + _doing_it_wrong( __FUNCTION__, __( 'Taxonomy names must be between 1 and 32 characters in length.' ), '4.2' ); + return new WP_Error( 'taxonomy_length_invalid', __( 'Taxonomy names must be between 1 and 32 characters in length.' ) ); } if ( false !== $args['query_var'] && ! empty( $wp ) ) { diff --git a/tests/phpunit/tests/taxonomy.php b/tests/phpunit/tests/taxonomy.php index dc153926b8..529b18cf74 100644 --- a/tests/phpunit/tests/taxonomy.php +++ b/tests/phpunit/tests/taxonomy.php @@ -153,6 +153,15 @@ class Tests_Taxonomy extends WP_UnitTestCase { unset($GLOBALS['wp_taxonomies'][$tax]); } + /** + * @ticket 31135 + * + * @expectedIncorrectUsage register_taxonomy + */ + function test_register_short_taxonomy() { + $this->assertInstanceOf( 'WP_Error', register_taxonomy( '', 'post', array() ) ); + } + /** * @ticket 21593 *