Commit Graph

596 Commits

Author SHA1 Message Date
Scott Taylor
ae3d1fccfb Simplify the logic for determining isset( $this->query['s'] ) after [28612], and don't limit this logic to just the main query.
Props SergeyBiryukov.
Fixes #11330.

Built from https://develop.svn.wordpress.org/trunk@28623


git-svn-id: http://core.svn.wordpress.org/trunk@28444 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-29 20:50:15 +00:00
Scott Taylor
d0bdcc3e7a 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.

Built from https://develop.svn.wordpress.org/trunk@28622


git-svn-id: http://core.svn.wordpress.org/trunk@28443 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-29 20:42:18 +00:00
Scott Taylor
c367eb71e5 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.

Built from https://develop.svn.wordpress.org/trunk@28613


git-svn-id: http://core.svn.wordpress.org/trunk@28437 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-29 06:04:15 +00:00
Scott Taylor
dfb75f0833 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.


Built from https://develop.svn.wordpress.org/trunk@28612


git-svn-id: http://core.svn.wordpress.org/trunk@28436 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-29 05:48:14 +00:00
Scott Taylor
fa38396998 Allow users to sort posts by type in WP_Query.
Props DeBAAT.
Fixes #28214.

Built from https://develop.svn.wordpress.org/trunk@28605


git-svn-id: http://core.svn.wordpress.org/trunk@28429 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-29 00:24:14 +00:00
Scott Taylor
333083debe 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.

Built from https://develop.svn.wordpress.org/trunk@28541


git-svn-id: http://core.svn.wordpress.org/trunk@28367 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-22 18:19:13 +00:00
Scott Taylor
affe27e5d1 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.

Built from https://develop.svn.wordpress.org/trunk@28533


git-svn-id: http://core.svn.wordpress.org/trunk@28359 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-19 17:41:13 +00:00
Scott Taylor
949cfd7a34 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.

Built from https://develop.svn.wordpress.org/trunk@28523


git-svn-id: http://core.svn.wordpress.org/trunk@28349 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-19 06:49:16 +00:00
Scott Taylor
5bc59586da 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.

Built from https://develop.svn.wordpress.org/trunk@28333


git-svn-id: http://core.svn.wordpress.org/trunk@28161 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 21:43:20 +00:00
Andrew Nacin
88e3ebe05b 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.

Built from https://develop.svn.wordpress.org/trunk@27836


git-svn-id: http://core.svn.wordpress.org/trunk@27670 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-29 06:03:15 +00:00
Scott Taylor
a6b9d323c6 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.


Built from https://develop.svn.wordpress.org/trunk@27686


git-svn-id: http://core.svn.wordpress.org/trunk@27525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-24 18:55:16 +00:00
Andrew Nacin
f75e5a023c WP_Query: allow split_the_query = false to avoid a split.
see #26937.

Built from https://develop.svn.wordpress.org/trunk@27633


git-svn-id: http://core.svn.wordpress.org/trunk@27476 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-20 02:54:15 +00:00
Scott Taylor
db1badfcab 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.


Built from https://develop.svn.wordpress.org/trunk@27511


git-svn-id: http://core.svn.wordpress.org/trunk@27354 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-12 04:08:18 +00:00
Scott Taylor
c92f58a6d5 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.


Built from https://develop.svn.wordpress.org/trunk@27456


git-svn-id: http://core.svn.wordpress.org/trunk@27302 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-07 18:59:14 +00:00
Scott Taylor
bc968895cc 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.


Built from https://develop.svn.wordpress.org/trunk@27455


git-svn-id: http://core.svn.wordpress.org/trunk@27301 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-07 18:33:15 +00:00
Andrew Nacin
1ff0aebf20 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.

Built from https://develop.svn.wordpress.org/trunk@27395


git-svn-id: http://core.svn.wordpress.org/trunk@27243 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-04 07:45:14 +00:00
Andrew Nacin
1d06679518 Add a $default argument to get_query_var() and WP_Query::get(). fixes #16471.
Built from https://develop.svn.wordpress.org/trunk@27304


git-svn-id: http://core.svn.wordpress.org/trunk@27157 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-26 23:58:14 +00:00
Drew Jaynes
d8a52d7523 Remove now-unnecessary vanity spacing of various hooks in wp-includes/query.php.
See #25514.

Built from https://develop.svn.wordpress.org/trunk@27211


git-svn-id: http://core.svn.wordpress.org/trunk@27068 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-20 17:59:13 +00:00
Drew Jaynes
9f9d3f8b8a 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.


Built from https://develop.svn.wordpress.org/trunk@27210


git-svn-id: http://core.svn.wordpress.org/trunk@27067 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-20 17:54:13 +00:00
Drew Jaynes
0469b382a3 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.


Built from https://develop.svn.wordpress.org/trunk@27208


git-svn-id: http://core.svn.wordpress.org/trunk@27065 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-20 17:46:13 +00:00
Drew Jaynes
6060a66451 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.


Built from https://develop.svn.wordpress.org/trunk@27207


git-svn-id: http://core.svn.wordpress.org/trunk@27064 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-20 17:41:12 +00:00
Drew Jaynes
742c77fc6f 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.


Built from https://develop.svn.wordpress.org/trunk@27206


git-svn-id: http://core.svn.wordpress.org/trunk@27063 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-20 17:34:14 +00:00
Scott Taylor
d6baca3c35 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.


Built from https://develop.svn.wordpress.org/trunk@27067


git-svn-id: http://core.svn.wordpress.org/trunk@26940 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-02 07:36:13 +00:00
Scott Taylor
d8db2e0cc7 Fix imperceptible whitespace cruff from [27017].
Built from https://develop.svn.wordpress.org/trunk@27018


git-svn-id: http://core.svn.wordpress.org/trunk@26895 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-01-22 22:35:12 +00:00
Scott Taylor
580d8ab0db Fix a bit of whitespace from [27016].
Built from https://develop.svn.wordpress.org/trunk@27017


git-svn-id: http://core.svn.wordpress.org/trunk@26894 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-01-22 22:34:12 +00:00
Scott Taylor
a9c661c00e 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.


Built from https://develop.svn.wordpress.org/trunk@27016


git-svn-id: http://core.svn.wordpress.org/trunk@26893 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-01-22 22:31:12 +00:00
Sergey Biryukov
9572d2d001 Avoid a fatal error in wp_reset_postdata() if $wp_query global is not set.
see #26775 for trunk.
Built from https://develop.svn.wordpress.org/trunk@26932


git-svn-id: http://core.svn.wordpress.org/trunk@26813 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-01-11 23:57:14 +00:00
Scott Taylor
f3b433cec3 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.



Built from https://develop.svn.wordpress.org/trunk@26874


git-svn-id: http://core.svn.wordpress.org/trunk@26758 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-27 19:30:10 +00:00
Scott Taylor
014007f029 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.


Built from https://develop.svn.wordpress.org/trunk@26864


git-svn-id: http://core.svn.wordpress.org/trunk@26750 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-22 18:31:12 +00:00
Andrew Nacin
ba55e433a4 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.

Built from https://develop.svn.wordpress.org/trunk@26525


git-svn-id: http://core.svn.wordpress.org/trunk@26418 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-02 16:26:10 +00:00
Scott Taylor
45deda0726 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.


Built from https://develop.svn.wordpress.org/trunk@26090


git-svn-id: http://core.svn.wordpress.org/trunk@26008 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-11 18:36:10 +00:00
Sergey Biryukov
8d659b278c Fix docblock formatting. fixes #25893.
Built from https://develop.svn.wordpress.org/trunk@26081


git-svn-id: http://core.svn.wordpress.org/trunk@26001 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-11 13:32:10 +00:00
Sergey Biryukov
47151b3534 Add @return for WP_Query::parse_search(). props tivnet. fixes #25894.
Built from https://develop.svn.wordpress.org/trunk@26061


git-svn-id: http://core.svn.wordpress.org/trunk@25984 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-09 16:05:10 +00:00
Sergey Biryukov
297e714932 Declare the variable before using it. props tivnet. fixes #25895 for trunk.
Built from https://develop.svn.wordpress.org/trunk@26060


git-svn-id: http://core.svn.wordpress.org/trunk@25983 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-09 15:53:09 +00:00
Scott Taylor
a519007202 Respect paged when offset is used in WP_Query. Adds unit tests.
Props coffee2code.
Fixes #18897.


Built from https://develop.svn.wordpress.org/trunk@26012


git-svn-id: http://core.svn.wordpress.org/trunk@25943 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-05 01:35:10 +00:00
Scott Taylor
ca85591c3c 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.



Built from https://develop.svn.wordpress.org/trunk@26007


git-svn-id: http://core.svn.wordpress.org/trunk@25938 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-04 23:54:10 +00:00
Andrew Nacin
3b82280cb4 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.

Built from https://develop.svn.wordpress.org/trunk@25954


git-svn-id: http://core.svn.wordpress.org/trunk@25913 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-27 20:51:10 +00:00
Andrew Nacin
c08aee70bb In search stopwords filtering, suppress possible PHP warnings when PCRE lacks UTF-8 support.
see #25709.

Built from https://develop.svn.wordpress.org/trunk@25932


git-svn-id: http://core.svn.wordpress.org/trunk@25891 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-26 05:59:09 +00:00
Andrew Nacin
70fd806759 Revert r25824:25875 from the core.svn.wordpress.org repository.
These commits were accidentally re-synced commits from develop.svn.wordpress.org due to a race condition. Thankfully, the history of this repository matters fairly little. It also happened only for trunk.


git-svn-id: http://core.svn.wordpress.org/trunk@25876 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-25 02:29:52 +00:00
Andrew Nacin
93e54b6646 Always apply the posts_search filter. Restores 3.6 behavior.
props SergeyBiryukov.
fixes #25664.

Built from https://develop.svn.wordpress.org/trunk@25867


git-svn-id: http://core.svn.wordpress.org/trunk@25867 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-24 22:59:12 +00:00
Andrew Nacin
8ae8e01b67 Remove the old wp_auto_updates_maybe_update cron event. Schedule the new wp_maybe_auto_update event at 7 a.m. and 7 p.m. in the site's timezone.
see #27704.

Built from https://develop.svn.wordpress.org/trunk@25825


git-svn-id: http://core.svn.wordpress.org/trunk@25825 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-24 22:53:14 +00:00
Andrew Nacin
77ca1f202a Avoid notice with search feeds.
fixes #25677.

Built from https://develop.svn.wordpress.org/trunk@25889


git-svn-id: http://core.svn.wordpress.org/trunk@25801 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-23 20:55:10 +00:00
Andrew Nacin
6d97f53134 Always apply the posts_search filter. Restores 3.6 behavior.
props SergeyBiryukov.
fixes #25664.

Built from https://develop.svn.wordpress.org/trunk@25867


git-svn-id: http://core.svn.wordpress.org/trunk@25779 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-22 17:21:09 +00:00
Dominik Schilling
e483532553 Move get_current_user_id() call out of if-block, see [25669].
props layotte.
fixes #25372.
Built from https://develop.svn.wordpress.org/trunk@25689


git-svn-id: http://core.svn.wordpress.org/trunk@25605 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-03 13:36:09 +00:00
Dominik Schilling
e4c8d56b76 Replace use of global $user_ID in favor of get_current_user_id(). fixes #25372.
Built from https://develop.svn.wordpress.org/trunk@25669


git-svn-id: http://core.svn.wordpress.org/trunk@25585 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-02 21:10:09 +00:00
Andrew Nacin
9e9093ab6d Don't order feeds of search results by relevance.
Allow for orderby=relevance to explicitly request relevance.

fixes #7394.

Built from https://develop.svn.wordpress.org/trunk@25668


git-svn-id: http://core.svn.wordpress.org/trunk@25584 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-02 21:05:08 +00:00
Scott Taylor
e3d58a5b23 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.


Built from https://develop.svn.wordpress.org/trunk@25659


git-svn-id: http://core.svn.wordpress.org/trunk@25576 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-10-02 19:42:09 +00:00
Andrew Nacin
d7fc6d5d49 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.

Built from https://develop.svn.wordpress.org/trunk@25632


git-svn-id: http://core.svn.wordpress.org/trunk@25549 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-27 17:34:09 +00:00
Andrew Nacin
dba857a39a 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.

Built from https://develop.svn.wordpress.org/trunk@25605


git-svn-id: http://core.svn.wordpress.org/trunk@25522 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-24 17:10:09 +00:00
Andrew Nacin
1fda14e76b Introduce a reset_postdata() method on the WP_Query object, which wp_reset_postdata() now wraps.
props ericlewis.
fixes #24785.

Built from https://develop.svn.wordpress.org/trunk@25601


git-svn-id: http://core.svn.wordpress.org/trunk@25518 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-24 15:53:09 +00:00
Scott Taylor
8bd9659d0d Move checks for post_type being an array inline. See [25291], [25292], #18614.
Built from https://develop.svn.wordpress.org/trunk@25312


git-svn-id: http://core.svn.wordpress.org/trunk@25274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-10 03:02:10 +00:00
Scott Taylor
7af06e7ab3 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.
Built from https://develop.svn.wordpress.org/trunk@25311


git-svn-id: http://core.svn.wordpress.org/trunk@25273 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-10 02:36:09 +00:00
Scott Taylor
a67d551dac 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.


Built from https://develop.svn.wordpress.org/trunk@25291


git-svn-id: http://core.svn.wordpress.org/trunk@25255 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-06 22:07:09 +00:00
Scott Taylor
d7cc1f506a 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.


Built from https://develop.svn.wordpress.org/trunk@25289


git-svn-id: http://core.svn.wordpress.org/trunk@25253 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-06 18:10:09 +00:00
Scott Taylor
bfdc55b24d Allow is_tag() to accept term_id, slug, 'term_name or array of any. Many other is_*()` funcs already do this. Adds unit tests.
Props ramiy.
Fixes #18746.


Built from https://develop.svn.wordpress.org/trunk@25287


git-svn-id: http://core.svn.wordpress.org/trunk@25251 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-06 17:27:08 +00:00
Scott Taylor
b22bc5e389 Check bad dates and redirect, instead of 404ing, as necessary and appropriate.
Adds query, conditional, and canonical Unit Tests.

Props kovshenin, SergeyBiryukov, DrewAPicture.
Fixes #10935.


Built from https://develop.svn.wordpress.org/trunk@25280


git-svn-id: http://core.svn.wordpress.org/trunk@25244 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-06 16:36:09 +00:00
Scott Taylor
8038d7f9e8 Move get_meta_type() into the WP_Meta_Query class as get_cast_for_type(). WP_Query can then access it like: $this->meta_query->get_cast_for_type().
See #21621, [25255].


Built from https://develop.svn.wordpress.org/trunk@25269


git-svn-id: http://core.svn.wordpress.org/trunk@25235 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-05 23:32:09 +00:00
Scott Taylor
4be84bbdfb When meta_type is passed with orderby => meta_value, orderby must also use CAST() to avoid scenarios like: SELECTing by UNSIGNED and then ordering by CHAR. Adds unit test.
Fixes #21621.

Built from https://develop.svn.wordpress.org/trunk@25255


git-svn-id: http://core.svn.wordpress.org/trunk@25223 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-05 16:57:08 +00:00
Scott Taylor
aa480a25e2 Introduce author__in and author__not_in query vars. Fixes issue with multiple author exclusion when comma-separated string is passed for author. Adds a bunch of missing unit tests.
Props pollett for initial patch.
Fixes #16854.


Built from https://develop.svn.wordpress.org/trunk@25248


git-svn-id: http://core.svn.wordpress.org/trunk@25216 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-04 21:33:09 +00:00
Scott Taylor
4a2c4c8f01 Kill the query in the following edge case: post_type => 'any' but exclude_from_search => false returns no valid post types. Adds unit tests.
Props mitchoyoshitaka.
Fixes #19198.


Built from https://develop.svn.wordpress.org/trunk@25239


git-svn-id: http://core.svn.wordpress.org/trunk@25209 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-04 18:51:10 +00:00
Scott Taylor
3b1b03e4c4 Convert category__and to category__in (less expensive) and unset it when only one category is passed. Adds unit tests.
Fixes #24245.



Built from https://develop.svn.wordpress.org/trunk@25238


git-svn-id: http://core.svn.wordpress.org/trunk@25208 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-04 18:17:09 +00:00
Andrew Nacin
41f1cd687b WP_Date_Query.
props Viper007Bond.
see #18694.

Built from https://develop.svn.wordpress.org/trunk@25139


git-svn-id: http://core.svn.wordpress.org/trunk@25119 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-08-27 16:39:09 +00:00
Andrew Nacin
7ff1bbea19 Don't cast the 'm' query variable to an integer as the value can exceed the range of a 32-bit signed integer.
props Viper007Bond.
fixes #24884.

Built from https://develop.svn.wordpress.org/trunk@25138


git-svn-id: http://core.svn.wordpress.org/trunk@25118 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-08-27 15:20:10 +00:00
Andrew Nacin
9ccc275d88 Correct phpdoc for WP_Query::$post. props lgedeon, fixes #25130.
Built from https://develop.svn.wordpress.org/trunk@25110


git-svn-id: http://core.svn.wordpress.org/trunk@25092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-08-23 22:02:08 +00:00
Andrew Nacin
f106142a9b Avoid getting tripped up on post content that starts with <!--nextpage-->. props SergeyBiryukov. fixes #16746.
git-svn-id: http://core.svn.wordpress.org/trunk@24599 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-07-09 05:23:53 +00:00
Andrew Nacin
092a33115c Remove wp_parse_post_content(), get_paged_content(), paginate_content() from 3.6, and remove the new $id parameters for get_the_content() and the_content().
The content parsing functions are good abstractions, but are no longer needed by core and are too closely tied to legacy globals, rather than paving a new path.

For get_the_content() and the_content(), this only worsens the function prototype. It muddies theme-specific display (more links, etc) with filtered content. `apply_filters( 'the_content', $post->post_content )` is sufficient practice for now.

see #24330, [24301]. see #23625, [23804].



git-svn-id: http://core.svn.wordpress.org/trunk@24598 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-07-09 05:22:50 +00:00
Andrew Nacin
c2db94d10c Use meta caps edit_post, read_post, and delete_post directly, rather than consulting the post type object. map_meta_cap() handles that for us. props markjaquith, kovshenin. fixes #23226.
git-svn-id: http://core.svn.wordpress.org/trunk@24593 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-07-08 20:05:42 +00:00
Mark Jaquith
bf35040898 Squash some PHP notices in taxonomy queries.
props hakre, wonderboymusic. fixes #16465.

git-svn-id: http://core.svn.wordpress.org/trunk@24456 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-06-20 17:21:13 +00:00
Ryan Boren
a2b4bc456f * Introduce wp_parse_post_content() and use it in setup_postdata(), get_the_content(), and get_the_remaining_content().
* Add a post ID argument to the_content(), get_the_content(), the_remaining_content(), and get_the_remaining_content().
* Pass the post ID to the the_content filter.
* Remove the format_pages global.
* Declare format_content and split_content as vars in WP_Post.
* phpdoc for the the_content filter that documents the new ID argument and denotes it as not-so-portable.

Props gcorne, DrewAPicture, duck_, aaroncampbell
see #24330


git-svn-id: http://core.svn.wordpress.org/trunk@24301 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-05-20 11:05:50 +00:00
Andrew Nacin
d334db7d4d WP_Query: If the post_type QV is an array with only one element, don't treat it as a multiple post type query.
If there is only one post type used by all taxonomies for a tax query, set the post type to the string.

fixes #24204.



git-svn-id: http://core.svn.wordpress.org/trunk@24115 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-04-27 01:28:35 +00:00
Sergey Biryukov
f37038e6ac Fix typo in phpdoc. props jcastaneda. fixes #24185.
git-svn-id: http://core.svn.wordpress.org/trunk@24096 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-04-25 23:10:36 +00:00
Mark Jaquith
2d382c1a5c Post Formats: use the content body for the body of the Quote post format.
* Searchable, better editing tools
* Less cluttered Post Format UI

props kovshenin, DrewAPicture. see #24009

git-svn-id: http://core.svn.wordpress.org/trunk@24034 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-04-18 18:07:58 +00:00
Mark Jaquith
697bf3d70e Only remove ONE piece of media from the content in setup_postdata().
props wonderboymusic. fixes #24052.

git-svn-id: http://core.svn.wordpress.org/trunk@23984 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-04-14 01:11:44 +00:00
Mark Jaquith
15dc5a3718 Standardize the post format theme API functions with the_post_format_THING() and get_the_post_format_THING().
fixes #23927

git-svn-id: http://core.svn.wordpress.org/trunk@23899 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-04-04 08:09:02 +00:00
Mark Jaquith
6d085d83d5 Chat post format code cleanup.
see #23625. props obenland.

git-svn-id: http://core.svn.wordpress.org/trunk@23876 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-03-29 21:06:37 +00:00
Mark Jaquith
1b83157127 Give themers tangible, user-friendly template functions to take full advantage of structured post formats.
* the_audio()
* the_video()
* the_image()
* get_the_media()

Also introduces:

* get_the_extra_content()
* the_extra_content()

Those two functions are like their non-extra versions, except that they
will have any post-format bits extracted. e.g. It's an image post, for
which the_image() will extract an <img /> tag. the_extra_content() will
output the content *without* that image.

props wonderboymusic. Herculean effort. fixes #23572

git-svn-id: http://core.svn.wordpress.org/trunk@23819 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-03-27 18:34:59 +00:00
Mark Jaquith
e11cb17f77 Extract chats as structured data.
* add_chat_detection_format() — to add a chat regex pattern
* get_content_chat() — to grab a chat from content
* get_the_chat() — grab the chat from the current (or passed) post
* the_chat() — output the chat in formatted HTML
* paginate_content() — puts the <!--nextpage--> splitting stuff into a function
* get_paged_content() — grabs a page of raw content, needed to paginate chats properly

see #23625. props wonderboymusic, lancewillett.

git-svn-id: http://core.svn.wordpress.org/trunk@23804 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-03-27 08:31:12 +00:00
Ryan Boren
43a7e695e9 Revert 23416, 23419, 23445 except for wp_reset_vars() changes. We are going a different direction with the slashing cleanup, so resetting to a clean slate. see #21767
git-svn-id: http://core.svn.wordpress.org/trunk@23554 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-03-01 16:28:40 +00:00
Andrew Nacin
34e93a1155 WP_Query: post_parent__in and post_parent__not_in. props wonderboymusic. fixes #11056.
git-svn-id: http://core.svn.wordpress.org/trunk@23436 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-02-16 02:08:46 +00:00
Ryan Boren
cc5ed3a485 Change all core API to expect unslashed rather than slashed arguments.
The exceptions to this are update_post_meta() and add_post_meta() which are often used by plugins in POST handlers and will continue accepting slashed data for now.

Introduce wp_upate_post_meta() and wp_add_post_meta() as unslashed alternatives to update_post_meta() and add_post_meta(). These functions could become methods in WP_Post so don't use them too heavily yet.

Remove all escape() calls from wp_xmlrpc_server. Now that core expects unslashed data this is no longer needed.

Remove addslashes(), addslashes_gpc(), add_magic_quotes() calls on data being prepared for handoff to core functions that until now expected slashed data. Adding slashes in no longer necessary.

Introduce wp_unslash() and use to it remove slashes from GPCS data before using it in core API. Almost every instance of stripslashes() in core should now be wp_unslash(). In the future (a release or three) when GPCS is no longer slashed, wp_unslash() will stop stripping slashes and simply return what is passed. At this point wp_unslash() calls can be removed from core.

Introduce wp_slash() for slashing GPCS data. This will also turn into a noop once GPCS is no longer slashed. wp_slash() should almost never be used. It is mainly of use in unit tests.

Plugins should use wp_unslash() on data being passed to core API.

Plugins should no longer slash data being passed to core. So when you get_post() and then wp_insert_post() the post data from get_post() no longer needs addslashes(). Most plugins were not bothering with this. They will magically start doing the right thing. Unfortunately, those few souls who did it properly will now have to avoid calling addslashes() for 3.6 and newer.

Use wp_kses_post() and wp_kses_data(), which expect unslashed data, instead of wp_filter_post_kses() and wp_filter_kses(), which expect slashed data. Filters are no longer passed slashed data.

Remove many no longer necessary calls to $wpdb->escape() and esc_sql().

In wp_get_referer() and wp_get_original_referer(), return unslashed data.

Remove old stripslashes() calls from WP_Widget::update() handlers. These haven't been necessary since WP_Widget.

Switch several queries over to prepare().

Expect something to break.

Props alexkingorg
see #21767


git-svn-id: http://core.svn.wordpress.org/trunk@23416 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-02-14 22:51:06 +00:00
Helen Hou-Sandí
b1f1579604 its <=> it's in documentation, along with a rogue the, The, and looses. props trepmal. fixes #22665.
git-svn-id: http://core.svn.wordpress.org/trunk@23191 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-12-20 15:55:32 +00:00
Andrew Nacin
fa10ccba23 Account for taxonomies tied to specific kinds of attachments when setting up post types for a taxonomy query.
props jondavidjohn. see #21290.



git-svn-id: http://core.svn.wordpress.org/trunk@22718 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-11-20 17:33:21 +00:00
Ryan Boren
06ee370814 Pinking shears
git-svn-id: http://core.svn.wordpress.org/trunk@22634 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-11-17 15:11:29 +00:00
Ryan Boren
7cc32c3990 If $this->posts is empty, don't do stuff to it.
Props wonderboymusic
fixes #22061


git-svn-id: http://core.svn.wordpress.org/trunk@22465 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-11-08 13:52:40 +00:00
Andrew Nacin
f85592021d Don't call get_term_by() in get_queried_object() if we have no terms. props wonderboymusic. fixes #21967.
git-svn-id: http://core.svn.wordpress.org/trunk@22450 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-11-07 22:09:05 +00:00
Ryan Boren
33fe750dce Don't assign wp_the_query to wp_query by reference. Removing the ref avoids accidentally stomping wp_the_query.
Props scribu, wpmuguru
fixes #22125


git-svn-id: http://core.svn.wordpress.org/trunk@22434 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-11-07 20:03:28 +00:00
Andrew Nacin
3a86c87c31 Remove single-argument calls to wpdb:prepare(), which are invalid as nothing is being prepared. see #22262.
git-svn-id: http://core.svn.wordpress.org/trunk@22428 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-11-07 19:28:08 +00:00
Ryan Boren
9e39bc5897 If posts is an empty array, bail from set_found_posts(). If posts is null or otherwise empty proceed through set_found_posts(). This accommodates caching plugins such as Advanced Post Cache that force posts to be empty for later population but still require the found_posts_query filter to run.
fixes #14426


git-svn-id: http://core.svn.wordpress.org/trunk@22258 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-10-17 20:57:23 +00:00
Ryan Boren
2c0d4f8ebf Pass the result of the the_preview filter through get_post() to ensure the post is filtered and of type WP_Post. fixes #22162
git-svn-id: http://core.svn.wordpress.org/trunk@22244 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-10-16 13:48:07 +00:00
Ryan Boren
7bf8c86dac Replace the sanitize loop at the end of WP_Query::get_posts() with an array_map of get_post(). get_post() will ensure each object in the loop is sanitized and is of the type WP_Post. see #22162
git-svn-id: http://core.svn.wordpress.org/trunk@22238 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-10-15 20:42:57 +00:00
Ryan Boren
09806c6b5f Convert the object in the posts array to WP_Post only if the posts array is not empty. Some post caching plugins can cause it to be empty. see #21309
git-svn-id: http://core.svn.wordpress.org/trunk@22011 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-26 12:32:54 +00:00
Ryan Boren
2b044bc85f * Avoid FOUND ROWS when no posts are found
* Set post_count and found_posts for all 'fields' queries.
* Set found_posts to post_count when limits are not used
* Update phpdoc for $found_posts and set_found_posts()

Props SergeyBiryukov, wonderboymusic

fixes #14426



git-svn-id: http://core.svn.wordpress.org/trunk@21928 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-20 14:55:54 +00:00
Andrew Nacin
095bc8b482 Clarify that conditional tags only return true for existing objects, not 404 situations. props SergeyBiryukov, fixes #16312.
git-svn-id: http://core.svn.wordpress.org/trunk@21890 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-18 17:35:11 +00:00
Andrew Nacin
2a4fc8952f Split tag names by [\r\n\t ] rather than \s to avoid that character class from eating characters. props rstern, SergeyBiryukov. fixes #21779. see #13413.
git-svn-id: http://core.svn.wordpress.org/trunk@21862 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-15 20:13:44 +00:00
Andrew Nacin
9ae3bf6fa6 When doing a taxonomy query, search against the currently registered post types of the queried taxonomies.
Prevents posts of a type no longer assigned to a queried taxonomy from being returned.

props jondavidjohn. fixes #21290.



git-svn-id: http://core.svn.wordpress.org/trunk@21855 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-15 19:44:51 +00:00
Andrew Nacin
a42be1dbb3 Check that the taxonomy matches when calling is_tax() with only a taxonomy argument. props wonderboymusic, see #20590.
git-svn-id: http://core.svn.wordpress.org/trunk@21836 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-13 17:15:13 +00:00
Ryan Boren
f483a85676 Remove unnecessary return by refs. Props wonderboymusic. fixes #21839
git-svn-id: http://core.svn.wordpress.org/trunk@21792 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-10 17:00:11 +00:00
Mark Jaquith
de36de7a8e Allow orderby=post__in, which uses the explicit order you provided in the post__in parameter. fixes #13729. props jakemgold, Otto42.
git-svn-id: http://core.svn.wordpress.org/trunk@21776 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-06 19:01:21 +00:00
Andrew Ozz
a9dc9dc829 Add menu_order to fill_query_vars(), see #21618
git-svn-id: http://core.svn.wordpress.org/trunk@21756 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-04 23:18:14 +00:00
Ryan Boren
dc8bbc5a59 Allow querying by menu_order. Props wonderboymusic. fixes #21618
git-svn-id: http://core.svn.wordpress.org/trunk@21748 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-04 21:09:27 +00:00