Opened 9 years ago
Last modified 6 weeks ago
#40650 new enhancement
get_pages() should accept 'any' among it's post_status arg
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | Awaiting Review | Priority: | normal |
| Severity: | normal | Version: | 4.7.4 |
| Component: | Posts, Post Types | Keywords: | has-patch has-unit-tests |
| Focuses: | Cc: |
Description
WP_Query::get_posts() accepts 'any' among it's $post_status $query_vars and I think get_pages() should do the same.
I've combed through the 4.7.4 core code and can't find any place where this enhancement would break existing code.
Attachments (1)
Change History (10)
#3
@
9 years ago
The note about me combing through the 4.7.4 core code is my signal that someone who knows the history of how get_pages() has been used in core in previous versions should check that my patch doesn't break previous versions of core if this patch would be backported.
#4
@
9 years ago
My immediate need for this request is a use of wp_dropdown_pages() on a post_type that uses custom post_stati and I was surprised to learn that I couldn't use 'any' to include posts with these custom post stati.
#5
@
9 years ago
- Summary changed from get_pages() should accept 'any' among it's post_stautus arg to get_pages() should accept 'any' among it's post_status arg
#6
@
3 years ago
- Keywords needs-refresh added
@pbiron This patch will have to be refreshed now #12821 has been committed.
This ticket was mentioned in PR #8042 on WordPress/wordpress-develop by @sukhendu2002.
16 months ago
#7
- Keywords needs-refresh removed
Trac ticket: https://core.trac.wordpress.org/ticket/40650
#9
@
6 weeks ago
- Keywords needs-testing removed
Patch Testing Report
Patch Tested: https://github.com/WordPress/wordpress-develop/pull/8042
Environment
- WordPress: 7.0-beta2-61752-src
- PHP: 8.2.29
- Server: nginx/1.29.4
- Database: mysqli (Server: 8.4.7 / Client: mysqlnd 8.2.29)
- Browser: Chrome 145.0.0.0
- OS: macOS
- Theme: Twenty Twenty-Five 1.4
- MU Plugins: None activated
- Plugins:
- Test Reports 1.2.1
Steps taken
- Using WordPress Develop environment run the wp cli command below. Change the container name
wordpress-develop-cli-1if necessary.
docker exec wordpress-develop-cli-1 wp eval 'print_r( get_pages( [ "post_status" => "any" ] ) );' --allow-root
- Confirm that no output is printed
- Apply the patch and run the same command
- Confirm that
get_pages()returns aWP_Post Object - ✅ Patch is solving the problem
Expected result
- Calling
get_pages( [ 'post_status' => 'any' ] )should return pages of all statuses (publish, draft, private, etc.), consistent with howWP_Queryhandles the'any'keyword. After applying the patch from PR 8042, the function returns a populated array ofWP_Postobjects spanning all post statuses, confirming the patch is solving the problem.


FYI: The patch I've attached is loosely based on how
'any'is handled inWP_Query()::get_posts(), but sinceget_pages()is implemented very differently fromWP_Query::get_posts()is kind of different.