Changeset 30141
- Timestamp:
- 11/01/2014 02:57:31 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/includes/ajax-actions.php
r30055 r30141 789 789 $level = 0; 790 790 if ( is_taxonomy_hierarchical($taxonomy) ) { 791 $level = count( get_ancestors( $tag->term_id, $taxonomy ) );791 $level = count( get_ancestors( $tag->term_id, $taxonomy, 'taxonomy' ) ); 792 792 ob_start(); 793 793 $wp_list_table->single_row( $tag, $level ); -
trunk/src/wp-includes/taxonomy.php
r30122 r30141 4055 4055 if ( $t->rewrite['hierarchical'] ) { 4056 4056 $hierarchical_slugs = array(); 4057 $ancestors = get_ancestors( $term->term_id, $taxonomy);4057 $ancestors = get_ancestors( $term->term_id, $taxonomy, 'taxonomy' ); 4058 4058 foreach ( (array)$ancestors as $ancestor ) { 4059 4059 $ancestor_term = get_term($ancestor, $taxonomy); … … 4280 4280 * Get an array of ancestor IDs for a given object. 4281 4281 * 4282 * @param int $object_id The ID of the object 4283 * @param string $object_type The type of object for which we'll be retrieving ancestors. 4284 * @return array of ancestors from lowest to highest in the hierarchy. 4285 */ 4286 function get_ancestors($object_id = 0, $object_type = '') { 4282 * @since 3.1.0 4283 * @since 4.1.0 Introduced the 'resource_type' parameter. 4284 * 4285 * @param int $object_id The ID of the object. 4286 * @param string $object_type The type of object for which we'll be retrieving ancestors. 4287 * Accepts a post type or a taxonomy name. 4288 * @param string $resource_type Optional. Type of resource $object_type is. Accepts 'post_type' or 'taxonomy'. 4289 * @return array An array of ancestors from lowest to highest in the hierarchy. 4290 */ 4291 function get_ancestors( $object_id = 0, $object_type = '', $resource_type = '' ) { 4287 4292 $object_id = (int) $object_id; 4288 4293 … … 4292 4297 4293 4298 /** This filter is documented in wp-includes/taxonomy.php */ 4294 return apply_filters( 'get_ancestors', $ancestors, $object_id, $object_type ); 4295 } 4296 4297 if ( is_taxonomy_hierarchical( $object_type ) ) { 4299 return apply_filters( 'get_ancestors', $ancestors, $object_id, $object_type, $resource_type ); 4300 } 4301 4302 if ( ! $resource_type ) { 4303 if ( is_taxonomy_hierarchical( $object_type ) ) { 4304 $resource_type = 'taxonomy'; 4305 } else if ( post_type_exists( $object_type ) ) { 4306 $resource_type = 'post_type'; 4307 } 4308 } 4309 4310 if ( 'taxonomy' === $resource_type ) { 4298 4311 $term = get_term($object_id, $object_type); 4299 4312 while ( ! is_wp_error($term) && ! empty( $term->parent ) && ! in_array( $term->parent, $ancestors ) ) { … … 4301 4314 $term = get_term($term->parent, $object_type); 4302 4315 } 4303 } elseif ( post_type_exists( $object_type )) {4316 } elseif ( 'post_type' === $resource_type ) { 4304 4317 $ancestors = get_post_ancestors($object_id); 4305 4318 } … … 4310 4323 * @since 3.1.0 4311 4324 * 4312 * @param array $ancestors An array of object ancestors. 4313 * @param int $object_id Object ID. 4314 * @param string $object_type Type of object. 4325 * @param array $ancestors An array of object ancestors. 4326 * @param int $object_id Object ID. 4327 * @param string $object_type Type of object. 4328 * @param string $resource_type Type of resource $object_type is. 4315 4329 */ 4316 4330 return apply_filters( 'get_ancestors', $ancestors, $object_id, $object_type ); -
trunk/tests/phpunit/tests/taxonomy.php
r29830 r30141 235 235 $this->assertEquals( 0, wp_insert_category( $cat, false ) ); 236 236 } 237 238 public function test_get_ancestors_taxonomy_non_hierarchical() { 239 register_taxonomy( 'wptests_tax', 'post' ); 240 $t = $this->factory->term->create( array( 241 'taxonomy' => 'wptests_tax', 242 ) ); 243 244 $this->assertSame( array(), get_ancestors( $t, 'wptests_tax' ) ); 245 _unregister_taxonomy( 'wptests_tax' ); 246 } 247 248 public function test_get_ancestors_taxonomy() { 249 register_taxonomy( 'wptests_tax', 'post', array( 250 'hierarchical' => true, 251 ) ); 252 $t1 = $this->factory->term->create( array( 253 'taxonomy' => 'wptests_tax', 254 ) ); 255 $t2 = $this->factory->term->create( array( 256 'taxonomy' => 'wptests_tax', 257 'parent' => $t1, 258 ) ); 259 $t3 = $this->factory->term->create( array( 260 'taxonomy' => 'wptests_tax', 261 'parent' => $t2, 262 ) ); 263 $t4 = $this->factory->term->create( array( 264 'taxonomy' => 'wptests_tax', 265 'parent' => $t1, 266 ) ); 267 268 $this->assertEqualSets( array( $t2, $t1 ), get_ancestors( $t3, 'wptests_tax' ) ); 269 _unregister_taxonomy( 'wptests_tax' ); 270 } 271 272 public function test_get_ancestors_post_type_non_hierarchical() { 273 register_post_type( 'wptests_pt' ); 274 $p = $this->factory->post->create( array( 275 'taxonomy' => 'wptests_pt', 276 ) ); 277 278 $this->assertEqualSets( array(), get_ancestors( $p, 'wptests_tax' ) ); 279 } 280 281 public function test_get_ancestors_post_type() { 282 register_post_type( 'wptests_pt', array( 283 'hierarchical' => true, 284 ) ); 285 $p1 = $this->factory->post->create( array( 286 'post_type' => 'wptests_pt', 287 ) ); 288 $p2 = $this->factory->post->create( array( 289 'post_type' => 'wptests_pt', 290 'post_parent' => $p1, 291 ) ); 292 $p3 = $this->factory->post->create( array( 293 'post_type' => 'wptests_pt', 294 'post_parent' => $p2, 295 ) ); 296 $p4 = $this->factory->post->create( array( 297 'post_type' => 'wptests_pt', 298 'post_parent' => $p1, 299 ) ); 300 301 $this->assertEqualSets( array( $p2, $p1 ), get_ancestors( $p3, 'wptests_pt' ) ); 302 _unregister_post_type( 'wptests_pt' ); 303 } 304 305 /** 306 * @ticket 15029 307 */ 308 public function test_get_ancestors_taxonomy_post_type_conflict_resource_type_taxonomy() { 309 register_post_type( 'wptests_conflict', array( 310 'hierarchical' => true, 311 ) ); 312 $p1 = $this->factory->post->create( array( 313 'post_type' => 'wptests_conflict', 314 ) ); 315 $p2 = $this->factory->post->create( array( 316 'post_type' => 'wptests_conflict', 317 'post_parent' => $p1, 318 ) ); 319 320 register_taxonomy( 'wptests_conflict', 'post', array( 321 'hierarchical' => true, 322 ) ); 323 $t1 = $this->factory->term->create( array( 324 'taxonomy' => 'wptests_conflict', 325 ) ); 326 $t2 = $this->factory->term->create( array( 327 'taxonomy' => 'wptests_conflict', 328 'parent' => $t1, 329 ) ); 330 331 $this->assertEqualSets( array( $p1 ), get_ancestors( $p2, 'wptests_conflict', 'post_type' ) ); 332 $this->assertEqualSets( array( $t1 ), get_ancestors( $t2, 'wptests_conflict', 'taxonomy' ) ); 333 $this->assertEqualSets( array( $t1 ), get_ancestors( $t2, 'wptests_conflict' ) ); 334 _unregister_post_type( 'wptests_pt' ); 335 } 237 336 }
Note: See TracChangeset
for help on using the changeset viewer.