[wp-trac] [WordPress Trac] #20419: get_sample_permalink() passes the wrong post_status to wp_unique_post_slug()
WordPress Trac
noreply at wordpress.org
Sat Dec 12 01:16:13 UTC 2015
#20419: get_sample_permalink() passes the wrong post_status to
wp_unique_post_slug()
--------------------------+-----------------------------
Reporter: mintindeed | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Future Release
Component: Permalinks | Version: 3.3
Severity: normal | Resolution:
Keywords: has-patch | Focuses:
--------------------------+-----------------------------
Comment (by mintindeed):
Thanks. There was one test that wasn't passing and was driving me nuts,
finally sussed it and now I think this is good to go.
@wonderboymusic's patch changed the method signature for
`wp_unique_post_slug()` so that it only contained a WP_Post object. After
reviewing this ticket with @boonebgorges, Boone suggested leaving the
first param (`$slug`), converting the second (`$post_ID`) to be either a
WP_Post object or post ID, and deprecating the remaining params. The
rationale is that there may be plugins or themes out there which use the
`wp_unique_post_slug()` function on its own, maybe even as a utility
function. This patch retains that utility, and it also means the changes
to `wp_unique_post_slug()` are reduced (another good thing).
So in the end, here are the changes made by the latest patch
(20419.3.diff):
* `get_sample_permalink()` sets `WP_Post->filter = 'sample'`, and the
method signature for `wp_unique_post_slug()` is modified to allow passing
a WP_Post object. This is great because the WP_Post object contains all
the meta information we need to generate a unique slug, and also lets use
pass along that this is a sample object and therefore we can safely bypass
some of the prior post status hacks (#22902, #30910).
* This gets rid of the need for the hack for #22902 (r24206) and the
similar hack in `get_sample_permalink()` which appears to date back to its
inception. I tested for regression and it appeared fine, I could not
reproduce using the steps in the ticket.
* Added new unit tests for this bug.
* Added this ticket number to existing unit tests for #30910, for
regression testing.
* Added this ticket number to existing unit tests for #18306, for
regression testing. #18306 isn't really a related issue, but when testing
my patch I found some scenarios where I accidentally regressed these
changes.
* #22902 doesn't have unit tests; I didn't add any because I'm pretty sure
the existing+new tests for `get_sample_permalink()` and
`wp_unique_post_slug()` cover everything.
* I updated existing unit tests which called `wp_unique_post_slug()` to
use the new function signature, with the exception of a new test which
verifies backwards compatibility of the params. This seemed like the right
way to do it, rather than adding `@expectedDeprecated wp_unique_post_slug`
to all the existing tests. I still added `@expectedDeprecated
wp_unique_post_slug` to a few existing tests for other tickets, just
because changing it to the new params would change the nature of the test
in a somewhat significant way.
Unit Tests
phpunit --group 30910
Passed
phpunit --group 20419
Passed
phpunit --group post
Passed
phpunit --group admin
Passed
phpunit --group ajax
Passed
--
Ticket URL: <https://core.trac.wordpress.org/ticket/20419#comment:15>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list