diff -r 7b1b88e27a20 -r 48c4eec2b7e6 wp/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php --- a/wp/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php Thu Sep 29 08:06:27 2022 +0200 +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php Fri Sep 05 18:40:08 2025 +0200 @@ -209,7 +209,8 @@ public function prepare_item_for_response( $item, $request ) { // Restores the more descriptive, specific name for use within this method. $taxonomy = $item; - $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; + + $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; $fields = $this->get_fields_for_response( $request ); $data = array(); @@ -272,16 +273,9 @@ // Wrap the data in a response object. $response = rest_ensure_response( $data ); - $response->add_links( - array( - 'collection' => array( - 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), - ), - 'https://api.w.org/items' => array( - 'href' => rest_url( rest_get_route_for_taxonomy_items( $taxonomy->name ) ), - ), - ) - ); + if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) { + $response->add_links( $this->prepare_links( $taxonomy ) ); + } /** * Filters a taxonomy returned from the REST API. @@ -298,6 +292,25 @@ } /** + * Prepares links for the request. + * + * @since 6.1.0 + * + * @param WP_Taxonomy $taxonomy The taxonomy. + * @return array Links for the given taxonomy. + */ + protected function prepare_links( $taxonomy ) { + return array( + 'collection' => array( + 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), + ), + 'https://api.w.org/items' => array( + 'href' => rest_url( rest_get_route_for_taxonomy_items( $taxonomy->name ) ), + ), + ); + } + + /** * Retrieves the taxonomy's schema, conforming to JSON Schema. * * @since 4.7.0 @@ -436,5 +449,4 @@ ); return $new_params; } - }