Make WordPress Core

Opened 4 years ago

Last modified 3 years ago

#42733 assigned defect (bug)

WordPress Embed URLs don't work for draft and scheduled posts with pretty permalinks

Reported by: Frank Klein Owned by: swissspidy
Milestone: Future Release Priority: normal
Severity: normal Version:
Component: Embeds Keywords: needs-patch needs-unit-tests
Focuses: Cc:


This came up during work on #41451. Two tests fail with is_embed is false but is expected to be true:

  • Tests_Embed_Template::test_oembed_output_draft_post
  • Tests_Embed_Template::test_oembed_output_scheduled_post

Without pretty permalinks, the return of get_post_embed_url() is http://example.org/?p=8&embed=true. This URL is recognised as an embed URL when the request is parsed.

But with pretty permalinks enabled, the return is http://example.org/?p=8/embed/. This is not recognised as an embed URL.

The reason for the mixed URL structure seems to be get_permalink(). This function does not return pretty permalinks for draft or future posts, see https://core.trac.wordpress.org/browser/tags/4.9/src/wp-includes/link-template.php#L165

Change History (5)

#1 @swissspidy
4 years ago

  • Keywords needs-patch needs-unit-tests added
  • Milestone changed from Awaiting Review to 5.0

Yeah it'd be great if get_post_embed_url() could get some improvement to make the URLs correct for such posts.

#2 @soulseekah
4 years ago

Maybe adding a third parameter to get_permalink - $force_pretty that disregards the post status and outputs pretty? Just a thought.

#3 @johnbillion
3 years ago

  • Milestone changed from 5.0 to 5.1

#4 @pento
3 years ago

  • Milestone changed from 5.1 to Future Release

This ticket needs a patch.

#5 @swissspidy
3 years ago

  • Owner set to swissspidy
  • Status changed from new to assigned
Note: See TracTickets for help on using tickets.