Boone Gorges
4ca2996eff
Bail from cleaning meta query clause when it's not an array.
...
Later isset() checks on string values were causing notices on PHP < 5.4.
Props jorbin.
See #29642 .
Built from https://develop.svn.wordpress.org/trunk@29941
git-svn-id: http://core.svn.wordpress.org/trunk@29692 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 20:25:19 +00:00
Boone Gorges
9345e9ffa5
Overhaul SQL generating logic in WP_Meta_Query to avoid unnecessary table joins.
...
The logic used to generate clause SQL in `WP_Meta_Query` is somewhat arcane,
stemming mostly from an ongoing effort to eliminate costly table joins when
they are not necessary. By systematizing the process of looking for shareable
joins - as was done in `WP_Tax_Query` [29902] - it becomes possible to simplify
the construction of SQL queries in `get_sql_for_clause()`. Moreover, the
simplified logic is actually considerably better at identifying shareable
joins, such that certain uses of `WP_Meta_Query` will see joins reduced by 50%
or more.
Includes integration tests for a representative cross-section of the query
clause combinations that result in shared table aliases.
Props boonebgorges, sc0ttkclark.
See #24093 .
Built from https://develop.svn.wordpress.org/trunk@29940
git-svn-id: http://core.svn.wordpress.org/trunk@29691 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 20:21:18 +00:00
Boone Gorges
d64b1ed955
Use only LEFT JOINs when a meta_query contains a NOT EXISTS clause.
...
Mixing LEFT and INNER JOIN in these cases results in posts with no metadata
being improperly excluded from results.
Props johnrom.
Fixes #29062 .
Built from https://develop.svn.wordpress.org/trunk@29890
git-svn-id: http://core.svn.wordpress.org/trunk@29646 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-14 02:17:18 +00:00
Boone Gorges
d1d9915f07
Introduce support for nested queries in WP_Meta_Query.
...
Previously, meta query arguments could be joined by a single AND or OR relation.
Now, these queries can be arbitrarily nested, allowing clauses to be linked
together with multiple relations.
Adds unit tests for the new nesting syntax. Modifies a few existing unit tests
that were overly specific for the old SQL syntax. Backward compatibility with
existing syntax is fully maintained.
Props boonebgorges, DrewAPicture.
See #29642 .
Built from https://develop.svn.wordpress.org/trunk@29887
git-svn-id: http://core.svn.wordpress.org/trunk@29643 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-13 22:03:18 +00:00
Andrew Nacin
9cbad29eb8
Meta Query: Revert [28659] (and [28665]) due to regressions.
...
props boonebgorges.
fixes #29285 . see #25538 .
Built from https://develop.svn.wordpress.org/trunk@29650
git-svn-id: http://core.svn.wordpress.org/trunk@29424 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-27 20:23:16 +00:00
Scott Taylor
eb66e40790
After [29339] and [29341], add more unit tests and less ambiguous type-checking before bailing in meta-related functions that expect a numeric value for `$object_id`.
...
Props SergeyBiryukov.
Fixes #28315 .
Built from https://develop.svn.wordpress.org/trunk@29421
git-svn-id: http://core.svn.wordpress.org/trunk@29199 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-06 22:08:16 +00:00
Scott Taylor
0d2a5c437e
Bail on `update_user_meta()` when `$object_id` is non-numeric.
...
Adds unit test.
Props jacklenox, wonderboymusic.
Fixes #28315 .
Built from https://develop.svn.wordpress.org/trunk@29339
git-svn-id: http://core.svn.wordpress.org/trunk@29119 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-08-01 17:10:15 +00:00
Scott Taylor
05eeb16e30
Replace all uses of `like_escape()` with `$wpdb->esc_like()`.
...
Props miqrogroove.
See #10041 .
Built from https://develop.svn.wordpress.org/trunk@28712
git-svn-id: http://core.svn.wordpress.org/trunk@28528 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-06-10 00:44:15 +00:00
Scott Taylor
38819880ec
Wrap individual meta query `WHERE` clases in parens, missed in `28659`.
...
Props boonebgorges.
Fixes #25538 .
Built from https://develop.svn.wordpress.org/trunk@28665
git-svn-id: http://core.svn.wordpress.org/trunk@28483 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-06-04 18:21:15 +00:00
Scott Taylor
a7c2180672
Fix SQL generation when `meta_query` has an `'relation' => 'OR'` for its queries and wants to `'orderby' => 'meta_value'`.
...
Adds unit test.
Props jackreichert.
Fixes #25538 .
Built from https://develop.svn.wordpress.org/trunk@28659
git-svn-id: http://core.svn.wordpress.org/trunk@28477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-06-04 05:48:14 +00:00
Scott Taylor
b539c1cd76
Add missing access modifiers to methods in `WP_Meta_Query`.
...
See #27881 , #22234 .
Built from https://develop.svn.wordpress.org/trunk@28522
git-svn-id: http://core.svn.wordpress.org/trunk@28348 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-19 06:35:14 +00:00
Scott Taylor
b2b25f7326
In `update_metadata_by_mid()`, `$original_value` is unused.
...
See #27882 .
Built from https://develop.svn.wordpress.org/trunk@28328
git-svn-id: http://core.svn.wordpress.org/trunk@28156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-06 21:29:26 +00:00
Drew Jaynes
a10a55cf87
Fix a typo in the `deleted_{$meta_type}_meta` hook description.
...
Props aliso.
Fixes #25826 .
Built from https://develop.svn.wordpress.org/trunk@27723
git-svn-id: http://core.svn.wordpress.org/trunk@27560 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-25 20:34:15 +00:00
Drew Jaynes
97958a3c16
Inline documentation for hooks in wp-includes/meta.php.
...
Props raamdev and kpdesign.
Fixes #25826 .
Built from https://develop.svn.wordpress.org/trunk@27698
git-svn-id: http://core.svn.wordpress.org/trunk@27537 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-25 08:56:14 +00:00
Scott Taylor
0115ba2f30
When using `meta_query` in a `WP_Query`, passing `NOT EXISTS` or `''` to `compare` should not require `value` to be set. The resulting SQL should then produce the appropriate `OR` clause for existence of non-existence after passing the query to the `$key_only_queries` stack internally.
...
Adds unit tests.
Props chrisguitarguy, for the original patch.
Fixes #23268 .
Built from https://develop.svn.wordpress.org/trunk@27689
git-svn-id: http://core.svn.wordpress.org/trunk@27528 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-24 19:57:15 +00:00
Andrew Nacin
0e2a70e8f5
Return false from metadata_exists() if the get_$type_metadata filter returns a false value.
...
props xknown.
fixes #22746 .
Built from https://develop.svn.wordpress.org/trunk@27562
git-svn-id: http://core.svn.wordpress.org/trunk@27405 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-17 19:40:16 +00:00
Sergey Biryukov
ab8847316c
Correct return values for update_metadata() and related functions.
...
fixes #21864 .
Built from https://develop.svn.wordpress.org/trunk@27191
git-svn-id: http://core.svn.wordpress.org/trunk@27050 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-02-18 21:36:14 +00:00
Scott Taylor
05b22769e9
In `update_meta_cache()`, ensure that meta is always stored in the same order. Removes an unnecessary `$wpdb->prepare` statement. Adds unit test.
...
Props mattheu.
Fixes #25511 .
Built from https://develop.svn.wordpress.org/trunk@26307
git-svn-id: http://core.svn.wordpress.org/trunk@26211 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-21 19:31:10 +00:00
Scott Taylor
53a2c3a181
Produce proper `CAST` for `DECIMAL` and `NUMERIC` in Meta Query. Adds a bunch of unit tests.
...
Props ericlewis.
Fixes #23033 .
Built from https://develop.svn.wordpress.org/trunk@26055
git-svn-id: http://core.svn.wordpress.org/trunk@25980 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-08 23:11:08 +00:00
Scott Taylor
5129b9d0ff
Respect the `compare` operator value in `meta_query` when `value` evaluates to `null`. Adds Unit Test.
...
Props bradyvercher, gradyetc.
Fixes #22967 .
Built from https://develop.svn.wordpress.org/trunk@26053
git-svn-id: http://core.svn.wordpress.org/trunk@25978 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-11-08 22:52:08 +00:00
Andrew Nacin
4ea86c6b47
Return false in update_metadata() and update_metadata_by_mid() when the DB query fails.
...
props leewillis77.
fixes #24933 .
Built from https://develop.svn.wordpress.org/trunk@25583
git-svn-id: http://core.svn.wordpress.org/trunk@25500 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-23 20:31:09 +00:00
Andrew Nacin
d814ad50b3
Add REGEXP to meta queries.
...
"REGEXP is usually a terrible idea to use, but I see no reason to disallow it."
props wonderboymusic.
fixes #18736 .
Built from https://develop.svn.wordpress.org/trunk@25525
git-svn-id: http://core.svn.wordpress.org/trunk@25445 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-20 20:13: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: `SELECT`ing 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
a9dc60c9a8
Improve inline docs for function params that can be serialized when non-scalar. Fixes #18488 .
...
Built from https://develop.svn.wordpress.org/trunk@25076
git-svn-id: http://core.svn.wordpress.org/trunk@25061 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-08-21 21:11:09 +00:00
Andrew Nacin
4fd4d4452f
Use sanitize_key() instead of esc_sql() when 'escaping' variable DB field names. see #21767 .
...
git-svn-id: http://core.svn.wordpress.org/trunk@24714 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-07-16 14:21:05 +00:00
Sergey Biryukov
6c89e06a2a
Avoid an undefined index notice. props DrewAPicture. fixes #22096 .
...
git-svn-id: http://core.svn.wordpress.org/trunk@24580 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-07-08 01:49:13 +00:00
Mark Jaquith
24ac7c4ac5
Prevent invalid queries in certain empty-array-passing meta_query cases.
...
fixes #22096 . props wonderboymusic.
git-svn-id: http://core.svn.wordpress.org/trunk@24563 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-07-05 16:40:46 +00:00
Sergey Biryukov
58c364947f
PHPDoc fixes and additions. fixes #24616 .
...
git-svn-id: http://core.svn.wordpress.org/trunk@24490 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-06-21 12:45:11 +00:00
Ryan Boren
15a06a35ab
Use wp_unslash() instead of stripslashes() and stripslashes_deep(). Use wp_slash() instead of add_magic_quotes().
...
see #WP21767
git-svn-id: http://core.svn.wordpress.org/trunk@23591 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-03-03 16:30:38 +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
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
Mark Jaquith
cd250fa7df
Defer the meta_id-fetching query until after comparison of the previous value, so that redundant calls to update_metadata() can bail without making that query. props nacin. fixes #22191
...
git-svn-id: http://core.svn.wordpress.org/trunk@22231 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-10-15 05:51:38 +00:00
Ryan Boren
778ba1c1b2
Improve performance of WP_Meta_Query when doing OR queries on meta keys. Props joehoyle, SergeyBiryukov. fixes #19729
...
git-svn-id: http://core.svn.wordpress.org/trunk@22103 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-10-03 12:35:06 +00:00
nacin
aebd57c588
Add NOT EXISTS to meta queries, allowing you to query for the non-existence of a meta key.
...
You could already use EXISTS by omitting a value to check.
props georgestephanis, scribu
fixes #18158
git-svn-id: http://core.svn.wordpress.org/trunk@21185 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-06-29 19:59:29 +00:00
nacin
c7cf0927fc
Use the metadata API rather than raw queries and direct do_action calls. see #20417 .
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@20435 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-04-11 20:02:39 +00:00
nacin
0730535015
Introduce $wpdb->delete(). props justindgivens, scribu. fixes #18948 .
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@20287 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-03-24 15:24:31 +00:00
ryan
e3b46b25d3
Lose EOF ?>. Clean up EOF newlines. fixes #12307
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@19712 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-01-08 17:01:11 +00:00
ryan
07ff8b216b
Use one space, not two, after trailing punctuation. fixes #19537
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@19593 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-12-13 23:45:31 +00:00
ryan
62afab8db3
Pinking shears
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@19054 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-10-24 19:13:23 +00:00
duck_
d5232043ce
Fix back compat issues with delete_postmeta and deleted_postmeta actions as these should be passed the meta ID. Fixes #18825 .
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@18835 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-09-30 15:19:32 +00:00
duck_
fda510aca1
Automatically set 'compare' => 'IN' in WP_Meta_Query::get_sql() when the meta value is an array. Props ldebrouwer, SergeyBiryukov. Fixes #16829 .
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@18825 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-09-29 22:10:56 +00:00
nacin
1066f1addb
Pass unslashed values from update_metadata() to add_metadata(). fixes #17343 .
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@18816 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-09-29 19:37:58 +00:00
nacin
cb21513a15
Fix docs for get_meta_sql(). First arg cannot be optional. props duck_, fixes #18717 .
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@18789 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-09-27 05:13:07 +00:00
ryan
0f06334e11
Introduce metadata_exists(), WP_User::get_data_by(), WP_User::get(), WP_User::has_prop(). Don't fill user objects with meta. Eliminate data duplication in cache and memory. Props scribu. see #15458
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@18597 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-08-24 19:32:59 +00:00
ryan
24d480d088
Turn delete_meta() , get_post_meta_by_id(), update_meta(), delete_post_meta_by_key() into wrappers around the metadata API. Add back compat *_postmeta actions to metadata API. Props jgadbois. see #18196
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@18500 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-08-03 16:48:37 +00:00
ryan
cd801aad2d
update_metadata_by_mid() and delete_metadata_by_mid(). Props kovshenin. see #18195
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@18494 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-08-01 17:01:54 +00:00
ryan
4ad0954961
Introduce register_meta(), get_metadata_by_mid(), and *_post_meta capabilities. fixes #17850
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@18445 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-07-20 22:04:35 +00:00
nacin
2571545ec0
@since s/3.2/3.2.0/
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@18268 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-06-11 04:40:18 +00:00
ryan
daa14c36f9
Bring out the pinking shears.
...
git-svn-id: http://svn.automattic.com/wordpress/trunk@18254 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-06-10 23:01:45 +00:00