Commit Graph

99 Commits

Author SHA1 Message Date
Boone Gorges
e36f06a87f Be more specific in documentation of 'slug' param for get_terms().
Props jfarthing84.
Fixes #23636.

git-svn-id: https://develop.svn.wordpress.org/trunk@30086 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-29 02:34:56 +00:00
Boone Gorges
0cbc8098d2 Update inline docs for [30052].
Fixes #23261.

git-svn-id: https://develop.svn.wordpress.org/trunk@30077 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-28 21:25:30 +00:00
Scott Taylor
1e8635fcea Adjust caching for get_term_by() calls:
* Remove md5 hashes for term name cache keys
* Remove the namespace for the keys for `names` and `slugs` and add them to the group names
* Remove `wp_get_last_changed()`, which @nacin hated
 
Props tollmanz.
Fixes #21760.


git-svn-id: https://develop.svn.wordpress.org/trunk@30073 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-28 21:04:52 +00:00
Boone Gorges
6df24465f4 Introduce orderby=include support for get_terms().
Props wpsmith.
Fixes #23261.

git-svn-id: https://develop.svn.wordpress.org/trunk@30052 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-28 18:12:30 +00:00
Boone Gorges
c6de5dfec5 Allow 'slug' param of get_terms() to accept an array.
Props jfarthing84, dlh.
Fixes #23636.

git-svn-id: https://develop.svn.wordpress.org/trunk@30042 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-28 14:56:33 +00:00
Boone Gorges
ae0ae95be6 Improve WP_Tax_Query param sanitization for empty strings.
When an empty string is passed as one of the clauses in the `$tax_query`
parameter, it should be discarded rather than parsed as a first-order clause.

Props tmtrademark.
Fixes #30117.

git-svn-id: https://develop.svn.wordpress.org/trunk@30031 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-26 22:56:36 +00:00
Boone Gorges
c2bea27bfd Invalidate cache for child terms when parent term is deleted.
Props socki03.
Fixes #29911.

git-svn-id: https://develop.svn.wordpress.org/trunk@29945 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-17 20:58:48 +00:00
Boone Gorges
44bb383371 Remove invalid continue calls from WP_Tax_Query::get_sql_for_clause().
This was leftover code from the previous implementation, which used a `foreach()`
loop. See [29901].

Props nofearinc.
See #29738, #29718.

git-svn-id: https://develop.svn.wordpress.org/trunk@29931 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-16 22:06:46 +00:00
Scott Taylor
0d58d32462 Cache get_term_by() calls:
* Add a helper function, `wp_get_last_changed()`, to retrieve a last-modified timestamp by cache group
* When caching a term, also make cache entries for slug and name via `slug:{$term_id}` and `name:{$term_id}` keys in the `$taxonomy:$last_changed` bucket that reference the term_id
* In `clean_term_cache()` and `update_term_cache()`, respect `$_wp_suspend_cache_invalidation`
* Original term cache entries maintain BC

Adds unit tests.

Props wonderboymusic, tollmanz, boonebgorges.
Fixes #21760.


git-svn-id: https://develop.svn.wordpress.org/trunk@29915 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-16 04:44:13 +00:00
Boone Gorges
56c82e534f Avoid redundant table joins in WP_Tax_Query.
IN clauses that are connected by OR require only a single table join. To avoid
extraneous joins, keep track of generated table aliases, and let sibling
clauses piggy-back on those aliases when possible.

Introduces WP_Tax_Query::sanitize_relation() to reduce some repeated code.

Adds unit tests to verify the JOIN consolidation, and integration tests for
cases where JOINS are being combined.

Props boonebgorges, otto42, jakub.tyrcha.
Fixes #18105.

git-svn-id: https://develop.svn.wordpress.org/trunk@29902 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-15 16:39:19 +00:00
Boone Gorges
2796b6969f Support 'EXISTS' and 'NOT EXISTS' in WP_Tax_Query.
These new values for the 'operator' parameter make it possible to filter items
that have no term from a given taxonomy, or any term from a given taxonomy.

Includes unit tests.

Fixes #29181.

git-svn-id: https://develop.svn.wordpress.org/trunk@29896 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-15 00:53:22 +00:00
Boone Gorges
6d94c2e30d Introduce support for nested queries in WP_Tax_Query.
Previously, tax 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.

In a few places, WP_Query runs through a list of clauses in a tax_query in order
to set certain query vars for backward compatibility. The necessary changes have
been made to WP_Query to support this feature with the new complex structure of
tax_query. Unit tests are included for these backward compatibility fixes.

Unit tests for the new nesting syntax are included.

Props boonebgorges.
Fixes #29718. See #29738.

git-svn-id: https://develop.svn.wordpress.org/trunk@29891 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-14 04:02:41 +00:00
Boone Gorges
bce6d64d59 Return an error when adding a term to a non-existent parent.
Parallels the logic of wp_insert_term(), introduced in [29196].

Props jesin.
Fixes #29614.

git-svn-id: https://develop.svn.wordpress.org/trunk@29867 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-09 18:11:17 +00:00
Drew Jaynes (DrewAPicture)
cfac76a2cc Add more complete inline documentation for get_term_link().
Adds more complete parameter descriptions for the `$term` and `$taxonomy` parameters. 

Props amruta123.b for the initial patch.
Fixes #29901.


git-svn-id: https://develop.svn.wordpress.org/trunk@29866 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-09 15:40:53 +00:00
Boone Gorges
adbed947d8 Don't bail out of term_exists() when term sanitizes to an empty string.
This change brings return values for failures of this sort in line with other
failed lookups in term_exists(): a null value is now returned in all cases
where the queried term is not found.

Adds unit test for the sanitization issue. Modifies existing unit test to
reflect the change in return value for empty term strings.

Props boonebgorges, georgestephanis.
Fixes #29589.

git-svn-id: https://develop.svn.wordpress.org/trunk@29865 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-09 03:15:50 +00:00
Boone Gorges
568b43f242 Fix term_exists() for parent = 0.
Passing a 0 (or '0') as the 'parent' param of term_exists() should limit
results to terms with no parent.

Adds unit test.

Fixes #29851.

git-svn-id: https://develop.svn.wordpress.org/trunk@29863 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-09 02:48:47 +00:00
Boone Gorges
01c529e062 Improve 'alias_of' handling in wp_insert_term() and wp_update_term().
Using get_term_by() rather than direct SQL queries to fetch the alias term
fixes a number of issues:

* Object cache for aliased term is properly cleared after update.
* If the aliased term is in the object cache, it's served from there, saving a database query.
* Duplicate 'edit_terms' and 'edited_terms' hooks can be removed.
* Fix a PHP notice when the 'alias_of' term is not found.
* Prevent the incorrect creation of a new term group for the primary term when the 'alias_of' term is not found.

Adds unit tests for 'alias_of' functionality in both functions.

Fixes #29848.

git-svn-id: https://develop.svn.wordpress.org/trunk@29862 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-09 02:31:35 +00:00
Boone Gorges
91a3b376de Explicitly declare hierarchical=false for post_tag in create_initial_taxonomies().
In certain edge cases, such as during the automated test suite,
create_initial_taxonomies() can be called in a situation where a non-default
permastruct setting has been saved outside of wp-admin. This causes the
'hierarchical' setting for the post_tag taxonomy to remain unset, leading to
PHP notices in get_term_link().

See #29827.

git-svn-id: https://develop.svn.wordpress.org/trunk@29859 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-09 00:57:16 +00:00
Boone Gorges
e79c2e0c9e In get_terms(), select term taxonomy count for all values of 'fields'.
Not having the count caused queries with 'fields' values of 'id=>name' and
'id=>slug' to return incorrect results when querying a hierarchical taxonomy
with 'hide_empty=true'.

Includes unit tests for get_terms() when using various combinations of 'fields',
'hide_empty', and 'hierarchical' arguments.

Props technical_mastermind.
Fixes #29859.

git-svn-id: https://develop.svn.wordpress.org/trunk@29845 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-06 22:04:11 +00:00
Scott Taylor
192cbe0644 wp_update_term() should mimic wp_insert_term() and set a value for $term_group before the alias_of logic runs. This ensures that $term_group exists when compact() is called.
See [28461].
Fixes #29278.


git-svn-id: https://develop.svn.wordpress.org/trunk@29549 602fd350-edb4-49c9-b593-d223f7449a82
2014-08-20 17:03:07 +00:00
John Blackbourn
ccc0673612 Docblock corrections for get_the_terms() function and corresponding filter, and registered_taxonomy action. Fixes #29183.
git-svn-id: https://develop.svn.wordpress.org/trunk@29467 602fd350-edb4-49c9-b593-d223f7449a82
2014-08-11 21:16:52 +00:00
Sergey Biryukov
9b1dbf7417 Use an existing string.
see #19205.

git-svn-id: https://develop.svn.wordpress.org/trunk@29234 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-18 23:55:47 +00:00
Scott Taylor
722930611c Avoid a race condition when multiple windows are open so that orphaned terms cannot be created by accident.
Adds a unit test.

Props dlh.
Fixes #19205.


git-svn-id: https://develop.svn.wordpress.org/trunk@29196 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-16 21:51:40 +00:00
Drew Jaynes (DrewAPicture)
6fb887a1e6 Add indentation for the hash notation missed in [29128].
See #28841.


git-svn-id: https://develop.svn.wordpress.org/trunk@29129 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-13 04:17:10 +00:00
Drew Jaynes (DrewAPicture)
810aeb40d4 Convert default arguments documentation for get_terms() into a hash notation.
See #28841.


git-svn-id: https://develop.svn.wordpress.org/trunk@29128 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-13 04:14:39 +00:00
Scott Taylor
04b0ec782b The 2nd argument to array_unique() was added to PHP in 5.2.9, so don't use it. We have to use our own code to return unique terms when fields => all in wp_get_object_terms().
See #28843 and [28583].


git-svn-id: https://develop.svn.wordpress.org/trunk@29119 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-12 03:53:34 +00:00
Drew Jaynes (DrewAPicture)
b1b454c7a0 Remove backticks on $post variables in some short parameter descriptions.
See [28653], [28654].
See #28388.


git-svn-id: https://develop.svn.wordpress.org/trunk@28976 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-03 19:27:54 +00:00
SergeyBiryukov
57029ef3fb Make default 'template' argument of the_taxonomies() and get_the_taxonomies() translatable.
props juliobox.
fixes #28714.

git-svn-id: https://develop.svn.wordpress.org/trunk@28957 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-02 13:20:02 +00:00
Drew Jaynes (DrewAPicture)
8e2098d706 Fix parameter description for $append in wp_set_object_terms() inline docs.
See #26570.


git-svn-id: https://develop.svn.wordpress.org/trunk@28952 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-02 01:38:22 +00:00
Sergey Biryukov
2ce93f915d Clarify the docs and add more unit tests for wp_set_object_terms().
props DrewAPicture.
fixes #26570.

git-svn-id: https://develop.svn.wordpress.org/trunk@28951 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-02 01:27:07 +00:00
Sergey Biryukov
00678ab0df Notify developers when register_post_type() or register_taxonomy() fails because of post type or taxonomy key length.
props mattheweppelsheimer.
fixes #28683.

git-svn-id: https://develop.svn.wordpress.org/trunk@28902 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-29 21:53:35 +00:00
Sergey Biryukov
084cc046ac Correct @return value for term_exists().
props simonwheatley.
fixes #28538.

git-svn-id: https://develop.svn.wordpress.org/trunk@28753 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-14 14:56:21 +00:00
Scott Taylor
5fe5f8f3ad Don't use variable variables in get_terms().
See #27881.


git-svn-id: https://develop.svn.wordpress.org/trunk@28736 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-11 17:40:11 +00:00
Scott Taylor
eadc17c4f9 In wp_insert_term(), when no slug is provided, check for an existing term by name. If it exists, use that slug instead of calling sanitize_title( $name ).
Prevents creating an endless number of terms like `A+` or `$$$$` in any given taxonomy.

Props wonderboymusic, SergeyBiryukov, aaroncampbell.
Fixes #17689.


git-svn-id: https://develop.svn.wordpress.org/trunk@28733 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-11 02:27:36 +00:00
Scott Taylor
84ad12b439 Replace all uses of like_escape() with $wpdb->esc_like().
Props miqrogroove.
See #10041.


git-svn-id: https://develop.svn.wordpress.org/trunk@28712 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-10 00:43:32 +00:00
Drew Jaynes (DrewAPicture)
9bb9177199 Make sure $post is properly documented as optional where applicable.
See #28388.


git-svn-id: https://develop.svn.wordpress.org/trunk@28653 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-03 03:52:46 +00:00
Scott Taylor
25593e291c When queries are passed to WP_Tax_Query, the value for operator is assumed to be uppercase. This is an unnecessary constraint. In ->get_sql(), cast it using $operator = strtoupper( $query['operator'] ).
Props clifgriffin.
Fixes #27557.


git-svn-id: https://develop.svn.wordpress.org/trunk@28618 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-29 17:52:25 +00:00
Scott Taylor
4dd4a32cde In wp_get_object_terms(), before returning terms (and before running them through the 'wp_get_object_terms' filter) - run them through $terms = array_values( array_unique( $terms, SORT_REGULAR ) ).
There will be "dupes" when the function is called with `'fields' => 'all_with_object_id'`, but the objects will actually be unique due to the `object_id` addition, so they shouldn't be filtered out. 

Adds unit tests. All other unit tests pass.

Fixes #11003.


git-svn-id: https://develop.svn.wordpress.org/trunk@28583 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-27 03:28:05 +00:00
Scott Taylor
e2a124a911 When adding queries to tax_query: if the query's field is term_taxonomy_id, don't require taxonomy to be specified. In WP_Tax_Query::transform_query(), $query['taxonomy'] is never checked for the 'term_taxonomy_id' case because 'term_taxonomy_id' is the primary key being looked up.
Adds unit tests.

Props helen.
Fixes #25284.



git-svn-id: https://develop.svn.wordpress.org/trunk@28562 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-23 19:58:52 +00:00
Scott Taylor
312ef7b264 These functions import $wpdb but do not use it.
See #27882.


git-svn-id: https://develop.svn.wordpress.org/trunk@28539 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-22 17:36:42 +00:00
Scott Taylor
ff8ae69fce Eliminate the use of extract() in wp_delete_term().
See #22400.


git-svn-id: https://develop.svn.wordpress.org/trunk@28466 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-17 14:54:03 +00:00
Scott Taylor
06c87f681a Eliminate the use of extract() in get_terms().
See #22400.


git-svn-id: https://develop.svn.wordpress.org/trunk@28465 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-17 14:46:07 +00:00
Scott Taylor
02066d4241 Eliminate the use of extract() in wp_insert_term().
See #22400.


git-svn-id: https://develop.svn.wordpress.org/trunk@28464 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-17 14:15:40 +00:00
Scott Taylor
b1b30ad58c Eliminate use of extract() in wp_update_term().
See #22400.


git-svn-id: https://develop.svn.wordpress.org/trunk@28461 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-16 21:28:05 +00:00
Scott Taylor
ae938f524e Eliminate use of extract() in wp_get_object_terms().
There are 3 properties, just set them to variables. They are used too often to warrant a refactor.

See #22400.


git-svn-id: https://develop.svn.wordpress.org/trunk@28441 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-15 19:57:57 +00:00
Scott Taylor
034de7f1de Eliminate the use of extract() in get_objects_in_term(). Only one property (order) was extracted.
See #22400.


git-svn-id: https://develop.svn.wordpress.org/trunk@28423 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-15 05:42:55 +00:00
Scott Taylor
e00ce3ae95 Eliminate the use of extract() in WP_Tax_Query::get_sql(). All unit tests still pass.
See #22400.


git-svn-id: https://develop.svn.wordpress.org/trunk@28422 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-15 05:40:40 +00:00
Scott Taylor
17edee17af Eliminate the use of extract() in the_taxonomies(). Adds unit test.
See #22400.


git-svn-id: https://develop.svn.wordpress.org/trunk@28421 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-15 05:24:54 +00:00
Scott Taylor
3e54a1fab5 Eliminate use of extract() in get_the_taxonomies(). Adds unit test.
See #22400.


git-svn-id: https://develop.svn.wordpress.org/trunk@28415 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-15 03:50:46 +00:00
Sergey Biryukov
6c401709f6 Correct 'show_in_menu' parameter description in register_taxonomy().
fixes #27943.

git-svn-id: https://develop.svn.wordpress.org/trunk@28241 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-02 11:28:05 +00:00