Make WordPress Core

Opened 7 years ago

Last modified 7 years ago

#39942 new defect (bug)

Restored Post may steal slug to published Post

Reported by: ziodave's profile ziodave Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version: 4.7.2
Component: Posts, Post Types Keywords:
Focuses: Cc:


Steps to reproduce:

  1. Create a Post 1 with title "Post",
  2. Assign the slug 'post' to Post 1,
  3. Publish Post 1,
  4. Unpublish Post 1 by setting it as 'Draft', then Update,
  5. After Update, Trash Post 1,
  6. Repeat 1-5 for Post 2,
  7. Create a Post 3 with title "Post",
  8. Assign the slug 'post' to Post 3,
  9. Publish Post 3,
  10. Now restore Post 2,
  11. Open/Reload the edit screen for Post 3,
  12. It'll show 'post-2' as slug,
  13. Saving/Updating Post 3 will change the slug from 'post' to 'post-2'.

Probably the following functions participate in the issue:

  • wp_add_trashed_suffix_to_post_name_for_post, which is checking for
if ( '__trashed' === substr( $post->post_name, -9 ) ) {

while Post 2 has post__trashed-2 as post name

  • wp_unique_post_slug, which is not checking the uniqueness of the slug if the post is draft.

Change History (1)

This ticket was mentioned in Slack in #core by ziodave. View the logs.

7 years ago

Note: See TracTickets for help on using tickets.