Make WordPress Core

Changeset 53010


Ignore:
Timestamp:
03/29/2022 11:05:26 AM (18 months ago)
Author:
spacedmonkey
Message:

Menus: Convert wp_get_nav_menu_items function to use a taxonomy query.

Change the wp_get_nav_menu_items function to replace the call to get_objects_in_term with a simple taxonomy query. This change improves performance as it results in one fewer query to retrieve menu items from the
database.

Props Spacedmonkey, peterwilsoncc.
Fixes #55372.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/nav-menu.php

    r52975 r53010  
    694694    static $fetched = array();
    695695
    696     $items = get_objects_in_term( $menu->term_id, 'nav_menu' );
    697     if ( is_wp_error( $items ) ) {
     696    if ( ! taxonomy_exists( 'nav_menu' ) ) {
    698697        return false;
    699698    }
    700699
    701     $defaults        = array(
     700    $defaults = array(
    702701        'order'       => 'ASC',
    703702        'orderby'     => 'menu_order',
     
    707706        'output_key'  => 'menu_order',
    708707        'nopaging'    => true,
     708        'tax_query'   => array(
     709            array(
     710                'taxonomy' => 'nav_menu',
     711                'field'    => 'term_taxonomy_id',
     712                'terms'    => $menu->term_taxonomy_id,
     713            ),
     714        ),
    709715    );
    710     $args            = wp_parse_args( $args, $defaults );
    711     $args['include'] = $items;
    712 
    713     if ( ! empty( $items ) ) {
     716    $args     = wp_parse_args( $args, $defaults );
     717    if ( $menu->count > 0 ) {
    714718        $items = get_posts( $args );
    715719    } else {
Note: See TracChangeset for help on using the changeset viewer.