When pretty permalinks aren't enabled, Optimization Detective sends the URL metrics data to the /index.php?rest_route=%2Foptimization-detective%2Fv1%2Furl-metrics%3Astore&_wpnonce=d6ef56f704. This ends up causing the request to fail with:
{
"code": "rest_invalid_param",
"message": "Failed to validate URL metric: rest_route is not a valid property of Object.",
"data": {
"status": 400
}
}
This is because rest_route is returned, unexpectedly, as one of the params when calling $request->get_params():
When pretty permalinks aren't enabled, Optimization Detective sends the URL metrics data to the
/index.php?rest_route=%2Foptimization-detective%2Fv1%2Furl-metrics%3Astore&_wpnonce=d6ef56f704
. This ends up causing the request to fail with:This is because
rest_route
is returned, unexpectedly, as one of the params when calling$request->get_params()
:https://github.com/WordPress/performance/blob/ddf297dca97641cfb21bef75fc4fd45ff49ea95b/plugins/optimization-detective/storage/rest-api.php#L131-L136
The quick fix would be to
unset( $data['rest_route'] )
, but it would be better if the params we obtain are exclusively from the JSON body.This code is also being touched in https://github.com/WordPress/performance/pull/1373 where the issue is also occurring.
Granted, likely only a miniscule number of sites don't have pretty permalinks enabled, so this isn't a critical issue.