Make WordPress Core

Opened 5 years ago

Closed 4 weeks ago

#15963 closed defect (bug) (fixed)

Don't try to add orphaned pages' parents' slugs to the page URL

Reported by: filosofo Owned by: wonderboymusic
Milestone: 4.4 Priority: normal
Severity: normal Version: 3.1
Component: Posts, Post Types Keywords: has-patch
Focuses: Cc:


If a page becomes orphaned---in other words, if a page points to a parent object that doesn't exist any more---get_page_uri() doesn't sanity check that the parent object actually exists.

Patch does the check without any extra work, by moving stuff around.

Attachments (7)

avoid-notice-on-orphaned-pages.15963.diff (748 bytes) - added by filosofo 5 years ago.
15963.2.diff (429 bytes) - added by MikeHansenMe 3 years ago.
checks the status of the parent page before adding it to uri
15963.3.diff (438 bytes) - added by SergeyBiryukov 3 years ago.
Original patch, refreshed
15963.3.alt.diff (447 bytes) - added by SergeyBiryukov 3 years ago.
Same as 15963.2.diff, with proper formatting
15963.4.diff (491 bytes) - added by MikeHansenMe 5 weeks ago.
15963.4.2.diff (505 bytes) - added by chriscct7 5 weeks ago.
15963.5.diff (1.4 KB) - added by MikeHansenMe 4 weeks ago.

Download all attachments as: .zip

Change History (19)

@MikeHansenMe3 years ago

checks the status of the parent page before adding it to uri

comment:1 @MikeHansenMe3 years ago

  • Keywords needs-testing 2nd-opinion added

This seems to fix the problem in version (3.5-alpha-21751).

Code used to test:
$uri = get_page_uri(get_the_ID());
echo '<a href="'. $uri .'">The Page</a>';
The output :
<a href="sample-page/thistoo">The Page</a>

My main concern is I was not using permalinks...
However the patch does show "thistoo" if I delete "Sample Page".

Last edited 3 years ago by MikeHansenMe (previous) (diff)

@SergeyBiryukov3 years ago

Original patch, refreshed

@SergeyBiryukov3 years ago

Same as 15963.2.diff, with proper formatting

comment:2 @MikeHansenMe3 years ago

  • Cc mdhansen@… added

comment:3 @nacin21 months ago

  • Component changed from General to Post Types

comment:4 @chriscct75 weeks ago

  • Keywords needs-refresh added; 3.2-early needs-testing 2nd-opinion removed
  • Milestone changed from Future Release to 4.4
  • Owner set to chriscct7
  • Status changed from new to assigned

@MikeHansenMe5 weeks ago

comment:5 @MikeHansenMe5 weeks ago

  • Keywords needs-refresh removed

@chriscct75 weeks ago

comment:6 @chriscct75 weeks ago

Careful there @MikeHansenMe with those string comparisons ;)

comment:7 @MikeHansenMe5 weeks ago

looks like 15963.3.alt.diff also had that issue.. My bad. Nice catch!

comment:8 @slackbot5 weeks ago

This ticket was mentioned in Slack in #meta by chriscct7. View the logs.

comment:9 @wonderboymusic4 weeks ago

  • Keywords needs-unit-tests added

@MikeHansenMe4 weeks ago

comment:10 @MikeHansenMe4 weeks ago

  • Keywords needs-unit-tests removed

15963.5.diff adds unit tests and updates the patch to be a bit simpler. Since it was referencing a post object anyway, we can avoid the call to get_post_status.

comment:11 @wonderboymusic4 weeks ago

  • Owner changed from chriscct7 to wonderboymusic
  • Status changed from assigned to reviewing

comment:12 @wonderboymusic4 weeks ago

  • Resolution set to fixed
  • Status changed from reviewing to closed

In 34001:

In get_page_uri(), do not add parent slugs to orphaned pages.

Adds unit test.

Props filosofo, MikeHansenMe, MikeHansenMe, chriscct7.
Fixes #15963.

Note: See TracTickets for help on using tickets.