Make WordPress Core


Ignore:
Timestamp:
07/22/2022 01:58:46 PM (4 years ago)
Author:
spacedmonkey
Message:

REST API: Avoid unnecessarily preparing item links.

Do not call the prepare_links methods in core REST API controllers, unless the _links or _embedded fields are requested. There is no need to prepare links if they are never returned in the response. This saves resources, as many calls to prepare_links methods perform database queries.

Props Spacedmonkey, timothyblynjacobs, rachelbaker, desrosj, dlh, hellofromTonya.
Fixes #52992.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-search-controller.php

    r51786 r53760  
    211211                $response = rest_ensure_response( $data );
    212212
    213                 $links               = $handler->prepare_item_links( $item_id );
    214                 $links['collection'] = array(
    215                         'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
    216                 );
    217                 $response->add_links( $links );
     213                if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
     214                        $links               = $handler->prepare_item_links( $item_id );
     215                        $links['collection'] = array(
     216                                'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
     217                        );
     218                        $response->add_links( $links );
     219                }
    218220
    219221                return $response;
Note: See TracChangeset for help on using the changeset viewer.