Scott Taylor
8bb2117aad
If post_status
is passed to WP_Query
as an array containing 'any'
and anything else, don't exclude the other values if they match when running any
's exclusion logic.
...
Adds unit tests.
Fixes #28007 .
git-svn-id: https://develop.svn.wordpress.org/trunk@28622 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-29 20:41:53 +00:00
Scott Taylor
8530693a51
If post__in
or post_parent__in
is passed to WP_Query
as an empty array, nuke the query. Both vars are currently only checked for truthiness after which they are ignored. Setting these vars at all indicates explicit filtering being desired.
...
Adds unit test.
Fixes #28099 .
git-svn-id: https://develop.svn.wordpress.org/trunk@28613 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-29 06:03:15 +00:00
Scott Taylor
4d1e46231b
When parsing the main query, if s
is set to empty: ?s=
and $this->is_main_query() && array_key_exists( 's', $this->query )
- kill the query instead of loading the homepage. This will load the search page with no results.
...
Fixes #11330 .
git-svn-id: https://develop.svn.wordpress.org/trunk@28612 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-29 05:47:35 +00:00
Scott Taylor
32893ac7ea
Allow users to sort posts by type
in WP_Query
.
...
Props DeBAAT.
Fixes #28214 .
git-svn-id: https://develop.svn.wordpress.org/trunk@28605 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-29 00:23:45 +00:00
Scott Taylor
0baa73f2e4
Apply order
to each passed value for orderby
in WP_Query
:
...
* Since `orderby` in `WP_Query` can accept space-delimited sets, yet only one `order` value: when multiple values are passed (and `DESC` is the order), the default sort order `ASC` is being applied to all values before the last in the set.
* There is a unit test that sporadically fails since 3.6 in `tests/post/revision` due to multiple posts having the same `post_date` from being added so rapidly
* When ordering revisions in `wp_get_post_revisions()`, order by `post_date ID`
* Change the `order` value in `wp_get_post_revisions()` to `ASC`. This will produce SQL like: `ORDER BY $wpdb->posts.post_date ASC, $wpdb->posts.ID ASC`. Previously, this would have produced SQL like: `ORDER BY $wpdb->posts.post_date DESC`, and with the addition of ` ID`: `ORDER BY $wpdb->posts.post_date ASC, $wpdb->posts.ID DESC`. Clearly, wrong. The original SQL produced: `ORDER BY $wpdb->posts.post_date DESC`. As such, return the reversions in reverse order using `array_reverse()`. Not doing so would break "Preview Changes."
* Add unit tests to assert that all of this works.
* All existing unit tests pass with the change to ordering multiple `orderby`s in `WP_Query`.
* In the future, we should support independent `order` for each `orderby`, see #17065 .
Props SergeyBiryukov, wonderboymusic.
Fixes #26042 .
git-svn-id: https://develop.svn.wordpress.org/trunk@28541 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-22 18:18:11 +00:00
Scott Taylor
6f4df85c8f
WP_Query
was only missing one access modifier.
...
Add access modifier (`public`) to applicable class methods/members of `WP_Rewrite`. I am not brave enough to set some of the `var`s to `private` without more testing.
See #27881 , #22234 .
git-svn-id: https://develop.svn.wordpress.org/trunk@28533 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-19 17:40:08 +00:00
Scott Taylor
bf54ad6054
Add missing access modifiers to methods in WP_Query
. Add magic methods for __get()
, __set()
, __isset()
, __unset()
, and __call()
.
...
Add unit test for magic methods.
See #27881 , #22234 .
git-svn-id: https://develop.svn.wordpress.org/trunk@28523 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-19 06:48:56 +00:00
Scott Taylor
098a5145c5
In WP_Query
, remove duplicate variable setting:
...
* In `->parse_search_order()`, a value is always set for `$search_orderby`, no need for empty initialization
* In `->get_posts()`, `$fields` is always set, no need for empty initialization
See #27882 .
git-svn-id: https://develop.svn.wordpress.org/trunk@28333 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-06 21:42:28 +00:00
Andrew Nacin
0ad35e169b
Revert the conversion of adjacent post queries to WP_Query. Explanation on the ticket.
...
Reverts [27285], [27286], [27287], [27288], [27291], [27292], [27293], [27296], [27633], [27634], [27635], and [27692].
see #26937 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27836 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-29 06:02:01 +00:00
Scott Taylor
710f11f2df
When using WP_Query's "fields" => "ids"
(or "fields" => "id=>parent"
), the returned values should be an array of integers, not array of integers represented by strings.
...
Adds unit tests. All other unit tests pass.
Props danielbachhuber.
Fixes #27252 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27686 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-24 18:54:38 +00:00
Andrew Nacin
5a49e9f4bf
WP_Query: allow split_the_query = false to avoid a split.
...
see #26937 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27633 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-20 02:53:44 +00:00
Scott Taylor
36df368171
In WP_Query::get_queried_object()
, account for pre_get_posts
by checking for tag
when tag_id
isn't present. Tags still need to be rolled up into tax_query
. Add a unit test confirming expected query vars during and after pre_get_posts
.
...
Props mattonomics for a patch.
See #27362 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27511 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-12 04:07:41 +00:00
Scott Taylor
dfc11a170b
On second thought, allow posts_per_rss
to be set in pre_get_posts
to override the posts_per_rss
option. There are backwards compatibility concerns otherwise.
...
Props nacin.
Partially reverts [27455]. Updates the unit test. See #25380 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27456 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-07 18:58:33 +00:00
Scott Taylor
65932f71fd
When setting posts_per_page
in WP_Query::get_posts()
, check for is_feed()
in the same place where posts_per_page
is set when it is not already set. Previously, when is_feed()
was true, posts_per_page
would be arbitrarily overwritten. This fix allows posts_per_page
to be set during pre_get_posts
when is_feed()
is true and not be overwritten.
...
Adds unit test.
Props wokamoto.
Fixes #25380 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27455 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-07 18:32:40 +00:00
Andrew Nacin
ed43f002b8
Add has_password and post_password query variables to WP_Query.
...
* has_password true means posts with passwords, false means posts without.
* post_password can query for posts with a particular password.
props wonderboymusic, robmiller.
fixes #20308 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27395 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-04 07:44:28 +00:00
Andrew Nacin
88f1b6e7ec
Add a $default argument to get_query_var() and WP_Query::get(). fixes #16471 .
...
git-svn-id: https://develop.svn.wordpress.org/trunk@27304 602fd350-edb4-49c9-b593-d223f7449a82
2014-02-26 23:57:10 +00:00
Drew Jaynes
b85d8ddbd8
Remove now-unnecessary vanity spacing of various hooks in wp-includes/query.php.
...
See #25514 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27211 602fd350-edb4-49c9-b593-d223f7449a82
2014-02-20 17:58:42 +00:00
Drew Jaynes
efd0b5081e
Inline documentation hooks in wp-includes/query.php.
...
Covers documentation for the various remaining query hooks, notably including but not limited to:
* `parse_query`
* `parse_tax_query`
* `pre_get_posts`
* `posts_results`
* `the_posts`
* `found_posts`
* `the_post`
Props dougwollison, DrewAPicture.
See #25514 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27210 602fd350-edb4-49c9-b593-d223f7449a82
2014-02-20 17:53:33 +00:00
Drew Jaynes
3776fd7d5d
Inline documentation for various SQL clause hooks in wp-includes/query.php.
...
Covers documentation for SQL clause hooks related to comment feeds, including:
* `comment_feed_join`
* `comment_feed_where`
* `comment_feed_groupby`
* `comment_feed_orderby`
* `comment_feed_limits`
Props dougwollison, DrewAPicture.
See #25514 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27208 602fd350-edb4-49c9-b593-d223f7449a82
2014-02-20 17:45:19 +00:00
Drew Jaynes
5f068b8a11
Inline documentation for various SQL clause hooks in wp-includes/query.php.
...
Covers documentation for SQL clause hooks specified for use by caching plugins, including:
* `posts_selection`
* `posts_where_request`
* `posts_groupby_request`
* `posts_join_request`
* `posts_orderby_request`
* `posts_distinct_request`
* `posts_fields_request`
* `post_limits_request`
* `posts_clauses_request`
Props dougwollison, DrewAPicture.
See #25514 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27207 602fd350-edb4-49c9-b593-d223f7449a82
2014-02-20 17:40:14 +00:00
Drew Jaynes
5fbf05a2cb
Inline documentation for various SQL clause hooks in wp-includes/query.php.
...
Covers documentation for general SQL clause hooks, including:
* `posts_where`
* `posts_join`
* `posts_where_paged`
* `posts_groupby`
* `posts_join_paged`
* `posts_orderby`
* `posts_distinct`
* `post_limits`
* `posts_fields`
* `posts_clauses`
Props dougwollison, DrewAPicture.
See #25514 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27206 602fd350-edb4-49c9-b593-d223f7449a82
2014-02-20 17:33:16 +00:00
Scott Taylor
b8e7bbb0f2
Fix an error in SQL generation when perm
is set and an array is passed for post_status
. Adds unit test.
...
Props oso96_2000.
Fixes #25523 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27067 602fd350-edb4-49c9-b593-d223f7449a82
2014-02-02 07:35:54 +00:00
Scott Taylor
956aa1c8ab
Fix imperceptible whitespace cruff from [27017].
...
git-svn-id: https://develop.svn.wordpress.org/trunk@27018 602fd350-edb4-49c9-b593-d223f7449a82
2014-01-22 22:34:49 +00:00
Scott Taylor
4725e85857
Fix a bit of whitespace from [27016].
...
git-svn-id: https://develop.svn.wordpress.org/trunk@27017 602fd350-edb4-49c9-b593-d223f7449a82
2014-01-22 22:33:28 +00:00
Scott Taylor
300cb7451e
Let is_attachment()
accept an $attachment parameter, similar to is_page()
and is_single()
. Adds Unit Tests for all 3.
...
Props alex-ye for the initial patch.
Fixes #24257 .
git-svn-id: https://develop.svn.wordpress.org/trunk@27016 602fd350-edb4-49c9-b593-d223f7449a82
2014-01-22 22:30:36 +00:00
Sergey Biryukov
0938ef0815
Avoid a fatal error in wp_reset_postdata() if $wp_query global is not set.
...
see #26775 for trunk.
git-svn-id: https://develop.svn.wordpress.org/trunk@26932 602fd350-edb4-49c9-b593-d223f7449a82
2014-01-11 23:56:43 +00:00
Scott Taylor
f8338aa3c3
In WP_Query::get_queried_object()
, move the check for $query['terms']
to a place where $query
is actually set. This should be included if [26864] makes it into 3.8.1.
...
Props SergeyBiryukov.
See #26728 , [26864], #26634 , #26627 .
git-svn-id: https://develop.svn.wordpress.org/trunk@26874 602fd350-edb4-49c9-b593-d223f7449a82
2013-12-27 19:29:39 +00:00
Scott Taylor
5cb2ad494e
Fix a regression for get_queried_object()
by checking for category_name
when cat
isn't set - mainly is_category()
being true for Uncategorized or when queried object is accessed in pre_get_posts
. Also check for $query['terms']
when trying to assign a term as the queried object when is_tax()
is true. Adds a unit test. See [26007] for how I originally broke this while fixing a bigger issue.
...
Props Chouby, jeremyfelt.
Fixes #26634 , #26627 .
git-svn-id: https://develop.svn.wordpress.org/trunk@26864 602fd350-edb4-49c9-b593-d223f7449a82
2013-12-22 18:30:09 +00:00
Andrew Nacin
fdcf1f4c12
Revert [26012] for now, which had fixed using paged
with offset
in WP_Query but introduced side effects for those working around it.
...
see #18897 .
git-svn-id: https://develop.svn.wordpress.org/trunk@26525 602fd350-edb4-49c9-b593-d223f7449a82
2013-12-02 16:25:54 +00:00
Scott Taylor
95a00fb920
Fix canonical redirection of cat
as described in #15256 by rolling the cat
query var into tax_query
, instead of category__in
/ category__not_in
. Top-level categories were only redirecting properly if they had no children.
...
All unit tests pass. Tests marked for #15256 are no longer skipped.
Fixes #15256 .
Props dd32.
git-svn-id: https://develop.svn.wordpress.org/trunk@26090 602fd350-edb4-49c9-b593-d223f7449a82
2013-11-11 18:35:21 +00:00
Sergey Biryukov
a2aed7b119
Fix docblock formatting. fixes #25893 .
...
git-svn-id: https://develop.svn.wordpress.org/trunk@26081 602fd350-edb4-49c9-b593-d223f7449a82
2013-11-11 13:31:19 +00:00
Sergey Biryukov
82878e0859
Add @return for WP_Query::parse_search(). props tivnet. fixes #25894 .
...
git-svn-id: https://develop.svn.wordpress.org/trunk@26061 602fd350-edb4-49c9-b593-d223f7449a82
2013-11-09 16:04:02 +00:00
Sergey Biryukov
8a87a2345b
Declare the variable before using it. props tivnet. fixes #25895 for trunk.
...
git-svn-id: https://develop.svn.wordpress.org/trunk@26060 602fd350-edb4-49c9-b593-d223f7449a82
2013-11-09 15:52:30 +00:00
Scott Taylor
d8f57f88ad
Respect paged
when offset
is used in WP_Query
. Adds unit tests.
...
Props coffee2code.
Fixes #18897 .
git-svn-id: https://develop.svn.wordpress.org/trunk@26012 602fd350-edb4-49c9-b593-d223f7449a82
2013-11-05 01:34:44 +00:00
Scott Taylor
0923b7b93a
Category and tag are typically checked before checking for a custom taxonomy. If the global query matches category or tag (even if it also has tax_query set), return category/tag as the queried object, instead of arbitrarily returning the first term in the tax_query
stack (typically those added with 'pre_get_posts').
...
Real world example: http://www.emusic.com/17dots/topics/daily-download/ - "tag" page, regionalized for US-only content using `pre_get_posts` passing in the terms "US" and "ALL" for "region" (custom tax). All of the theme functions would output "ALL" as the term name. Even though it was a tag archive, the queried object was an arbitrary term from `tax_query`.
See [26006]. All unit tests pass.
Fixes #20767 .
git-svn-id: https://develop.svn.wordpress.org/trunk@26007 602fd350-edb4-49c9-b593-d223f7449a82
2013-11-04 23:53:55 +00:00
Andrew Nacin
47c58004fe
Query stopwords: Only eliminate single A-Z letters as search terms.
...
Stop trying to match any single letters that are not East Asian characters, as this requires PCRE with UTF-8 support; and because it doesn't actually work.
fixes #25709 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25954 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-27 20:50:31 +00:00
Andrew Nacin
287e4db6f6
In search stopwords filtering, suppress possible PHP warnings when PCRE lacks UTF-8 support.
...
see #25709 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25932 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-26 05:58:37 +00:00
Andrew Nacin
a75c4a56a8
Avoid notice with search feeds.
...
fixes #25677 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25889 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-23 20:54:22 +00:00
Andrew Nacin
d3981e2793
Always apply the posts_search filter. Restores 3.6 behavior.
...
props SergeyBiryukov.
fixes #25664 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25867 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-22 17:20:17 +00:00
Dominik Schilling (ocean90)
3f422038dd
Move get_current_user_id()
call out of if-block, see [25669].
...
props layotte.
fixes #25372 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25689 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-03 13:35:12 +00:00
Dominik Schilling (ocean90)
6311fbbfdb
Replace use of global $user_ID
in favor of get_current_user_id()
. fixes #25372 .
...
git-svn-id: https://develop.svn.wordpress.org/trunk@25669 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-02 21:09:52 +00:00
Andrew Nacin
dac3f63f9c
Don't order feeds of search results by relevance.
...
Allow for orderby=relevance to explicitly request relevance.
fixes #7394 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25668 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-02 21:04:36 +00:00
Scott Taylor
7918d5cd98
Make url_to_postid()
work for custom post type URLs. Use get_post_types()
and get_taxonomies()
instead of directly accessing globals. Adds unit test.
...
Props faishal, for the globals fix.
Fixes #19744 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25659 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-02 19:41:19 +00:00
Andrew Nacin
cff3bb14e6
Order search results by relevance, rather than by date.
...
The ordering logic is as follows:
* Full sentence matches in post titles.
* All search terms in post titles.
* Any search terms in post titles.
* Full sentence matches in post content.
Each section and any remaining posts are then sorted by date.
Introduces some filters:
* wp_search_stopwords, to filter stop words ignored in WHERE.
* posts_search_orderby, to filter the ORDER BY when ordering search results.
props azaozz, wonderboymusic.
fixes #7394 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25632 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-27 17:33:36 +00:00
Andrew Nacin
de89edd699
When is_main_query() is called during the pre_get_posts hook, issue _doing_it_wrong().
...
The is_main_query() WP_Query method should be used in these instances instead.
see #23329 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25605 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-24 17:09:56 +00:00
Andrew Nacin
13408ddcbd
Introduce a reset_postdata() method on the WP_Query object, which wp_reset_postdata() now wraps.
...
props ericlewis.
fixes #24785 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25601 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-24 15:52:41 +00:00
Scott Taylor
e72ffa5d96
Move checks for post_type
being an array inline. See [25291], [25292], #18614 .
...
git-svn-id: https://develop.svn.wordpress.org/trunk@25312 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-10 03:01:10 +00:00
Scott Taylor
9ece28e545
Add an action at the end of WP_Query::parse_tax_query()
called (wait for it...) parse_tax_query
which will enable developers to alter $this->tax_query->queries
before SQL is generated. pre_get_posts
is too early for many scenarios.
...
git-svn-id: https://develop.svn.wordpress.org/trunk@25311 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-10 02:35:26 +00:00
Scott Taylor
48dc7e576b
Ensure that the post type object is the queried object when a post type has been registered with has_archive => true
. Ensure it is not stomped when decorated with tax_query
. Adds unit tests.
...
Props nacin.
Fixes #18614 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25291 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-06 22:06:40 +00:00
Scott Taylor
22278ec6a9
Introduce wp_using_ext_object_cache()
- mimic wp_suspend_cache_invalidation()
and discourage direct access to $_wp_using_ext_object_cache
, cleaning up importing of globals in functions and provides function to modify that global. Loads the packaged object cache when an external cache hasn't been loaded or doesn't contain wp_cache_init()
.
...
Fixes #21401 .
git-svn-id: https://develop.svn.wordpress.org/trunk@25289 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-06 18:09:24 +00:00