diff -r 7b1b88e27a20 -r 48c4eec2b7e6 wp/wp-includes/rest-api/endpoints/class-wp-rest-menus-controller.php --- a/wp/wp-includes/rest-api/endpoints/class-wp-rest-menus-controller.php Thu Sep 29 08:06:27 2022 +0200 +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-menus-controller.php Fri Sep 05 18:40:08 2025 +0200 @@ -40,7 +40,7 @@ * @since 5.9.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error True if the request has read access for the item, otherwise false or WP_Error object. + * @return true|WP_Error True if the request has read access for the item, otherwise WP_Error object. */ public function get_item_permissions_check( $request ) { $has_permission = parent::get_item_permissions_check( $request ); @@ -81,7 +81,7 @@ * @since 5.9.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error Whether the current user has permission. + * @return true|WP_Error True if the current user has permission, WP_Error object otherwise. */ protected function check_has_read_only_access( $request ) { if ( current_user_can( 'edit_theme_options' ) ) { @@ -134,7 +134,10 @@ $data = $this->filter_response_by_context( $data, $context ); $response = rest_ensure_response( $data ); - $response->add_links( $this->prepare_links( $term ) ); + + if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) { + $response->add_links( $this->prepare_links( $term ) ); + } /** This action is documented in wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php */ return apply_filters( "rest_prepare_{$this->taxonomy}", $response, $term, $request ); @@ -520,6 +523,10 @@ * @return array Item schema data. */ public function get_item_schema() { + if ( $this->schema ) { + return $this->add_additional_fields_schema( $this->schema ); + } + $schema = parent::get_item_schema(); unset( $schema['properties']['count'], $schema['properties']['link'], $schema['properties']['taxonomy'] ); @@ -531,7 +538,7 @@ ), 'context' => array( 'view', 'edit' ), 'arg_options' => array( - 'validate_callback' => function ( $locations, $request, $param ) { + 'validate_callback' => static function ( $locations, $request, $param ) { $valid = rest_validate_request_arg( $locations, $request, $param ); if ( true !== $valid ) { @@ -563,6 +570,8 @@ 'type' => 'boolean', ); - return $schema; + $this->schema = $schema; + + return $this->add_additional_fields_schema( $this->schema ); } }