Make WordPress Core

Opened 4 years ago

Closed 23 months ago

Last modified 17 months ago

#57048 closed defect (bug) (fixed)

Handle trailing slashes in rest_preload_api_request

Reported by: spacedmonkey Owned by: swissspidy
Priority: normal Milestone: 6.8
Component: REST API Version: 5.0
Severity: normal Keywords: has-patch has-unit-tests has-test-info commit
Cc: Focuses: rest-api

Description

When passing a path to rest_preload_api_request that ends in query string, ensure that the parsed path also is untrailingslashit. Follow up to #51636

Change History (12)

#1 @antonvlasenko
2 years ago

I'm working on a patch for this issue.

This ticket was mentioned in ​PR #6927 on ​WordPress/wordpress-develop by ​@antonvlasenko.


2 years ago
#2

  • Keywords has-patch has-unit-tests added; needs-patch removed

#3 @antonvlasenko
2 years ago

  • Keywords has-testing-info added

The ​proposed PR updates the rest_preload_api_request function to remove trailing slashes from path parth of the request when preloading data for a specified REST API path.

Before patch:
Preloading /wp/v2/types//?media// would return an array with preloaded data keyed as /wp/v2/types//?media. Only slashes at the end of the path were removed.

After patch:
The path would be /wp/v2/types?media.

Steps to test this PR:

  1. Login to the admin panel.
  2. Edit an existing post or create a new one and then click Edit.
  3. Open the dev tools, inspect the source code of the page. You should see a call to the wp.apiFetch.createPreloadingMiddleware() function and the preloaded data passed as an argument of that function. Typical preloaded requests are:
    • /wp/v2/types?context=view
    • /wp/v2/taxonomies?context=view
    • /wp/v2/blocks?context=edit&per_page=-1
    • /wp/v2/posts/<post-ID>?context=edit
    • /wp/v2/types/post?context=edit
    • /wp/v2/settings
Last edited 2 years ago by antonvlasenko (previous) (diff)

#4 follow-up: @spacedmonkey
2 years ago

Me and @swissspidy came across this issue while working web stories together. We patched it in our own code. ​Here is our version of this function.

I can't remember now how we fixed this issue, but look at the git history.

#5 @swissspidy
2 years ago

  • Milestone Future Release → 6.8

#6 @swissspidy
2 years ago

  • Version 4.7 → 5.0

#7 @swissspidy
2 years ago

  • Owner set to swissspidy
  • Status new → assigned

#8 in reply to: ↑ 4 @antonvlasenko
2 years ago

Replying to spacedmonkey:

Me and @swissspidy came across this issue while working web stories together. We patched it in our own code. ​Here is our version of this function.

I can't remember now how we fixed this issue, but look at the git history.

Thank you for the hint, @spacedmonkey.
I believe this commit addresses the issue in your version of the function: ​https://github.com/GoogleForCreators/web-stories-wp/commit/a7f4977f74d24f73c0a72d23501f6a1eb7ac9337#diff-e38e7938d6df1990969cd7d147a8d590b359fa3a96a33802c85aa5723abf0223R188

The proposed solution in this PR appears to not only resolve the issue you mentioned, but also correct the key at which preloaded data is stored (within the context of array_reduce()).

Version 0, edited 2 years ago by antonvlasenko (next)

#9 @spacedmonkey
23 months ago

  • Keywords commit added

I have approved the PR for this change. Looks good to me. I have marked this ticket as commit. Take it away @swissspidy

#10 @swissspidy
23 months ago

  • Resolution → fixed
  • Status assigned → closed

In 59457:

REST API: Remove trailing slashes when preloading requests and there is a query string.

Follow-up to [51648], see #51636.

Props antonvlasenko, swissspidy, spacedmonkey.
Fixes #57048.

#12 @wordpressdotorg
17 months ago

  • Keywords has-test-info added; has-testing-info removed
Note: See TracTickets for help on using tickets.