Opened 11 years ago
Last modified 6 years ago
#26365 new defect (bug)
map_meta_cap() should use parent post status when post has a post status of inherit
Reported by: | methnen | Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | 3.8 |
Component: | Role/Capability | Keywords: | has-patch needs-unit-tests |
Focuses: | Cc: |
Description (last modified by )
When a post has a status of inherit map_meta_cap()
fails to use the parent's status and so logic that uses the status to determine the mapping doesn't behave as expected.
For example read_post()
will often fail when it should pass. Similarly for delete_post()
and edit_post()
.
This has recently caused a variety of difficulties in a project I've been working on where we have a custom post type that uses the inherit post status on children so authors only need to manage the post status of the main parent post.
The fix is two parts. One a fix to get_post_status()
that causes it to check the parent status so it'll work backwards to the first post that has a valid (not 'inherit') post status.
The second is a fix to map_meta_cap()
that checks for a post status of inherit on the post object and then uses get_post_status()
on the post_parent id value.
A couple related/similar issues:
#23458 (these patches would fix the root issue)
#17668 (fixed)
Attachments (5)
Change History (18)
#1
@
11 years ago
- Keywords has-patch added
+1 one this. I'm biased because we need this to resolve the bugs named above. We make extensive use of custom post types with inherit status on a number of gigaom.com properties.
#6
@
10 years ago
- Keywords needs-refresh added
Attempted to push out the patch but it's been open for 2 years and failed on the apply. Needs a refresh.
#8
@
10 years ago
@antpb I'll get updated patches in sometime today. Glad to see this getting some attention.
#10
@
10 years ago
26365.diff simply combines to previous solution into a single diff.
#11
@
10 years ago
- Keywords has-patch needs-unit-tests added; 2nd-opinion needs-refresh needs-patch removed
This needs unit test coverage.
map_meta_cap_fix