--- 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;
}
-
}