When priming the cache for taxonomy term nav items, don't fetch term descendants.

Descending the term tree causes unnecessary database queries when priming the
cache for a term with many descendants.

Fixes #31724.

git-svn-id: https://develop.svn.wordpress.org/trunk@32294 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Boone Gorges 2015-04-24 18:57:07 +00:00
parent 7add279793
commit c3ea088948
2 changed files with 23 additions and 1 deletions

View File

@ -585,7 +585,10 @@ function wp_get_nav_menu_items( $menu, $args = array() ) {
if ( ! empty( $terms ) ) {
foreach ( array_keys($terms) as $taxonomy ) {
get_terms($taxonomy, array('include' => $terms[$taxonomy]) );
get_terms( $taxonomy, array(
'include' => $terms[ $taxonomy ],
'hierarchical' => false,
) );
}
}
unset($terms);

View File

@ -117,6 +117,25 @@ class Test_Nav_Menus extends WP_UnitTestCase {
}
public function test_wp_get_nav_menu_items_with_taxonomy_term() {
register_taxonomy( 'wptests_tax', 'post', array( 'hierarchical' => true ) );
$t = $this->factory->term->create( array( 'taxonomy' => 'wptests_tax' ) );
$child_terms = $this->factory->term->create_many( 2, array( 'taxonomy' => 'wptests_tax', 'parent' => $t ) );
$term_menu_item = wp_update_nav_menu_item( $this->menu_id, 0, array(
'menu-item-type' => 'taxonomy',
'menu-item-object' => 'wptests_tax',
'menu-item-object-id' => $t,
'menu-item-status' => 'publish'
) );
$term = get_term( $t, 'wptests_tax' );
$menu_items = wp_get_nav_menu_items( $this->menu_id );
$this->assertSame( $term->name, $menu_items[0]->title );
$this->assertEquals( $t, $menu_items[0]->object_id );
}
/**
* @ticket 29460
*/