Opened 15 years ago
Closed 13 years ago
#19243 closed enhancement (duplicate)
Introduce WP_Query::exists(), or have WP_Query::get() return false for non-existence
| Reported by: | nacin | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Query | Version: | |
| Severity: | normal | Keywords: | needs-patch |
| Cc: | Focuses: |
Description
See 15178#comment:8.
A query variable for an an endpoint with no value (/blah/, rather than /feed/rss2/) is set, but it is empty. WP_Query::get() returns an empty string when no QV is set, though, so you need to dig into WP_Query::query_vars directly. This is annoying. It should return false when the QV is not existence.
This should be rather backwards compatible, but WP_Query::exists() may be desired (also, or instead of). In this case, it won't work for core query vars, as _fill_query_vars() clears these, rather than unsets them. We should either change how _fill_query_vars() works, or something.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)
http://core.trac.wordpress.org/ticket/16303#comment:1 Westi's code there suggests a workaround: you can hook to 'request' and set the var to true if isset but empty, then when checking get_query_var in template_redirect or wherever, if it's false or empty then it hadn't been set.