Commit Graph
174 Commits
Author SHA1 Message Date
Sergey Biryukov 3b6ff03136 wp_update_term() should check if get_term() returned null.
props dlh.
fixes #31954.

git-svn-id: https://develop.svn.wordpress.org/trunk@32117 602fd350-edb4-49c9-b593-d223f7449a82
2015-04-13 01:20:57 +00:00
Drew Jaynes bec2445b11 Fix a variety of inline documentation syntactical issues in wp-includes/taxonomy.php.
See #31888.


git-svn-id: https://develop.svn.wordpress.org/trunk@32047 602fd350-edb4-49c9-b593-d223f7449a82
2015-04-05 17:07:54 +00:00
Drew Jaynes 601aee103a Supplement hook documentation for the get_terms_fields filter to more clearly explain the expected consequences of using it to modify the fields to select in a terms query.
Props boonebgorges.
Fixes #31174.


git-svn-id: https://develop.svn.wordpress.org/trunk@31855 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-20 20:10:22 +00:00
Boone Gorges 31bded083b Ensure that the $exclusions parameter of 'list_terms_exclusions' filter is always a string.
Props fhwebcs.
Fixes #31681.

git-svn-id: https://develop.svn.wordpress.org/trunk@31813 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-18 18:22:20 +00:00
Boone Gorges ec49827b0b In wp_insert_term(), allow a term with an existing name if a unique $slug has been provided.
`wp_insert_term()` protects against the creation of terms with duplicate names
at the same level of a taxonomy hierarchy. However, it's historically been
possible to override this protection by explicitly providing a value of `$slug`
that is unique at the hierarchy tier. This ability was broken in [31734], and
the current changeset restores the original behavior.

A number of unit tests are added and refactored in support of these changes.

See #17689 for discussion of a fix that was superceded by [31734]. This commit
retains the fix for the underlying bug described in that ticket.

See #31328.

git-svn-id: https://develop.svn.wordpress.org/trunk@31792 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-16 11:15:34 +00:00
Gary Pendergast 1357e7fc2e Add emoji URL support, and Twemoji fallback for displaying slugs in wp-admin, when the browser doesn't natively support emoji.
Props pento, SergeyBiryukov and boonebgorges.

Fixes #31328



git-svn-id: https://develop.svn.wordpress.org/trunk@31734 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-11 22:54:49 +00:00
Drew Jaynes 86b23615ea Remove a duplicate mention of the default value for the $number argument in get_terms().
Props iandunn.
Fixes #31526.


git-svn-id: https://develop.svn.wordpress.org/trunk@31652 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-07 01:04:22 +00:00
Boone Gorges 98322a7143 Ensure that an array of object IDs is passed to the 'get_object_terms' filter.
Originally introduced in [31581].

Props doublesharp.
Fixes #18828.

git-svn-id: https://develop.svn.wordpress.org/trunk@31639 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-06 13:17:09 +00:00
Drew Jaynes 653f2ee36e Correct the $number argument description in get_terms() to reflect that an empty string or 0 will return all possible results, not -1.
Previously, it was noted that -1 would return all possible results. However, as the value of `$number` is passed through `absint()`, -1 would actually be converted to 1, thereby producing unexpected results.

Props iandunn.
Fixes #31526.


git-svn-id: https://develop.svn.wordpress.org/trunk@31638 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-06 08:04:32 +00:00
Boone Gorges 22179be8ca Introduce 'get_object_terms' filter in wp_get_object_terms().
The existing 'wp_get_object_terms' filter accepts a parameter `$taxonomies`,
which is a list of taxonomy names formatted for direct use in a MySQL IN clause.
This formatting makes it difficult to make use of the taxonomy list in filter
callbacks. However, changing the parameters passed to the existing filter
raises backward compatibility concerns, so we introduce a new filter that
receives a structured `$taxonomy_array` parameter.

We also take this opportunity to correct and clean up some of the documentation
on the 'wp_get_object_terms' filter.

Props postpostmodern, doublesharp, wonderboymusic, nacin.
Fixes #18828.

git-svn-id: https://develop.svn.wordpress.org/trunk@31581 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-27 20:30:13 +00:00
Boone Gorges e365b3a364 Add 'orderby=description' support to get_terms().
This fixes an interface inconsistency in edit-tags.php, where Description
appears as a sortable column header.

Props neil_pie.
Fixes #31364.

git-svn-id: https://develop.svn.wordpress.org/trunk@31532 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-24 16:36:26 +00:00
Boone Gorges 6bd6da908e Pass taxonomy name, not object, to 'edit_term_taxonomy' and 'edited_term_taxonomy' actions.
These actions are fired in a number of different places, and in some cases
the tax name is passed, while in others the taxonomy object is passed. This
inconsistency made it difficult for plugins to use the `$taxonomy` value.

Props ipm-frommen.
Fixes #30999.

git-svn-id: https://develop.svn.wordpress.org/trunk@31525 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-23 21:07:34 +00:00
John Blackbourn 22fc19e06d Return a WP_Error if an empty name is provided when registering a taxonomy.
Fixes #31135
Props tyxla, MikeHansenMe


git-svn-id: https://develop.svn.wordpress.org/trunk@31449 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-13 16:26:37 +00:00
Boone Gorges ed639b408a Split shared taxonomy terms on term update.
When updating an existing taxonomy term that shares its `term_id` with
another term, we generate a new row in `wp_terms` and associate the updated
term_taxonomy_id with the new term. This separates the terms, such that
updating the name of one term does not change the name of any others.

In cases where a plugin or theme stores term IDs in the database, term splitting
can cause backward compatibility issues. The current changeset introduces
two utilities to aid developers with the transition. The `'split_shared_term'`
action fires when the split takes place, and should be used to catch changes in
term_id. In cases where `'split_shared_term'` cannot be used, the
`wp_get_split_term()` function gives developers access to data about terms
that have previously been split. Documentation for these functions, with
examples, can be found in the Plugin Developer Handbook. WordPress itself
stores term IDs in this way in two places; `_wp_check_split_default_terms()`
and `_wp_check_split_terms_in_menus()` are hooked to `'split_shared_term'` to
perform the necessary cleanup.

See [30241] for a previous attempt at the split. It was reverted in [30585]
for 4.1.0.

Props boonebgorges, mboynes.
See #5809.

git-svn-id: https://develop.svn.wordpress.org/trunk@31418 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-11 19:41:54 +00:00
Boone Gorges b121105f26 Late escaping in get_terms() and WP_Tax_Query.
Props vortfu, dd32.

git-svn-id: https://develop.svn.wordpress.org/trunk@31367 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-08 01:58:51 +00:00
Sergey Biryukov fa1a382dff Remove unnecessary array_shift() usage in get_terms() for better performance.
props bswatson, VolodymyrC.
fixes #31182.

git-svn-id: https://develop.svn.wordpress.org/trunk@31365 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-07 19:44:13 +00:00
Boone Gorges 41db99c31a Use field-specific sanitization in WP_Tax_Query::transform_query().
When terms are entered into the database, term fields are sanitized with
`sanitize_term_field()`. To ensure that the `SELECT ... WHERE` queries in
`WP_Tax_Query::transform_query()` are not broken by overzealous sanitization,
`sanitize_term_field()` should be used in that case as well. This fixes a bug
where a tax_query using 'field=name' would fail if the 'terms' parameter
contained characters (like spaces) that were improperly removed by
`sanitize_title_for_query()`.

Fixes #27810.

git-svn-id: https://develop.svn.wordpress.org/trunk@31346 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-06 02:01:24 +00:00
Boone Gorges 057c428346 Introduce 'show_in_quick_edit' parameter for register_taxonomy().
Setting 'show_in_quick_edit' to false when registering a custom taxonomy will
hide the taxonomy when editing posts using Quick Edit.

The new 'quick_edit_show_taxonomy' filter allows this behavior to be filtered
on a finer scale, as when you want a given taxonomy to be hidden for one post
type but not for others.

Props hlashbrooke.
Fixes #26948.

git-svn-id: https://develop.svn.wordpress.org/trunk@31307 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-30 19:17:51 +00:00
Boone Gorges 2e848072eb Don't use term IDs for array indexes when caching object terms.
Uncached results pulled from `wp_get_object_terms()` are zero-indexed (ie 0,
1, 2...). As a result, `get_the_terms()` was returning a strictly different
array when pulling from the cache and when the cache was empty.

Props joshlevinson.
Fixes #31086.

git-svn-id: https://develop.svn.wordpress.org/trunk@31287 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-28 20:42:25 +00:00
Boone Gorges 9d3a6394fb Ensure that 'hierarchical' is respected in get_terms() when multiple taxonomies are passed.
Previously, attempts to descend the family tree of each term were done using
the first taxonomy in the `$taxonomies` array, with the result that terms not
belonging to that taxonomy were not found and their children not properly
parsed. We fix this bug by fetching each term's taxonomy with the SQL query,
and then using that taxonomy to get the correct children for each term.

Fixes #31118.

git-svn-id: https://develop.svn.wordpress.org/trunk@31285 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-26 19:03:09 +00:00
Boone Gorges fed49d226c Ensure that 'pad_counts' is not discarded when the first of multiple taxonomies passed to get_terms() is non-hierarchical.
See #31118.

git-svn-id: https://develop.svn.wordpress.org/trunk@31284 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-26 18:08:59 +00:00
Boone Gorges 5bcee9e939 In get_terms(), check hierarchy for all $taxonomies before bailing early from 'parent' or 'child_of'.
There is a pre-check in `get_terms()` that prevents an unnecessary database
query if the 'parent' or 'child_of' parameter is not found in the cached term
hierarchy (since a term without an index in the hierarchy cache has no
descendants). Previously, only the first item in the `$taxonomies` array was
being checked, with the result that an empty array was being erroneously
returned in cases where the 'parent' or 'child_of' term is in a subsequent
taxonomy.

See #31118.

git-svn-id: https://develop.svn.wordpress.org/trunk@31276 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-25 02:45:11 +00:00
Boone Gorges c67e5da8c9 Introduce 'childless' parameter to get_terms().
This new parameter allows developers to limit queried terms to terminal nodes -
ie, those without any descendants.

As part of the improvement, some internal logic in `get_terms()` has been
consolidated. Parameters that resolve to a NOT IN clause containing term IDs
('exclude', 'exclude_tree', and 'childless') are now parsed into a single
"exclusions" array before the SQL clause is generated.

Props theMikeD, horike.
Fixes #29839.

git-svn-id: https://develop.svn.wordpress.org/trunk@31275 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-24 18:47:30 +00:00
Boone Gorges 10d3b42211 Introduce 'parent' parameter to wp_get_object_terms().
Props mikeschinkel.
Fixes #15675.

git-svn-id: https://develop.svn.wordpress.org/trunk@31270 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-23 14:56:04 +00:00
Boone Gorges d80ca82693 Better loop detection for _pad_term_counts().
The `$ancestors` check must be reset for each term in order for term counts
to be correct.

Fixes #20635.

git-svn-id: https://develop.svn.wordpress.org/trunk@31248 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-19 16:51:44 +00:00
Drew Jaynes (DrewAPicture) a79297ba2d Minor fix for inline doc syntax in a changelog entry for wp_get_object_terms().
See #28688.


git-svn-id: https://develop.svn.wordpress.org/trunk@31238 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-18 19:04:45 +00:00
Boone Gorges fd886b7d60 Add @since annotation for 'orderby' values introduced in [31236].
See #28688.

git-svn-id: https://develop.svn.wordpress.org/trunk@31237 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-18 19:02:34 +00:00
Boone Gorges 9501fb3213 Additional 'orderby' values for wp_get_object_terms().
Adds support for ordering by 'taxonomy', 'term_taxonomy_id', and 'parent'.

Props ChriCo.
Fixes #28688.

git-svn-id: https://develop.svn.wordpress.org/trunk@31236 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-18 18:56:38 +00:00
Boone Gorges c7e95b9433 Correct wp_get_object_terms() documentation.
The 'orderby' parameter accepts a number of values that have never been
properly documented.

git-svn-id: https://develop.svn.wordpress.org/trunk@31232 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-17 20:38:20 +00:00
Boone Gorges b18ee3334f Standardize the docblock for wp_get_object_terms().
The enumeration of the `$args` parameter has been moved from the long
description to an array hash associated with the proper `@param` attribute.

git-svn-id: https://develop.svn.wordpress.org/trunk@31231 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-17 20:08:11 +00:00
Scott Taylor cd2d6d27d9 wp_set_object_terms() takes $taxonomy as a string. Update @param.
See #30799.


git-svn-id: https://develop.svn.wordpress.org/trunk@31221 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-16 23:26:38 +00:00
Scott Taylor 1d3b42d226 Fix some erroneous @param annotations.
See #30799.


git-svn-id: https://develop.svn.wordpress.org/trunk@31219 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-16 22:43:13 +00:00
Boone Gorges 60f2983b2e Bail out of hierarchy loops in _get_term_children().
This prevents infinite loops that lead to PHP nesting limit fatal errors.

Props boonebgorges, sgrant.
Fixes #24461.

git-svn-id: https://develop.svn.wordpress.org/trunk@31207 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-16 17:09:11 +00:00
Boone Gorges 8ae64f6384 Bail out of hierarchy loops in _pad_term_counts().
Taxonomy hierarchy loops should not occur naturally, but when they do, the
logic of `_pad_term_counts()` could result in infinite loops, leading to
timeouts. We avoid this by breaking when a loop is detected.

Fixes #20635.

git-svn-id: https://develop.svn.wordpress.org/trunk@31206 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-16 16:45:21 +00:00
Scott Taylor 865185903b There are some random add_action() and add_filter() calls littered around some files in wp-includes/. These should be moved to wp-includes/default-filters.php with the rest of the registered hooks. It seems like this was the best practice for awhile and then we randomly stopped. This file loads way before any of the includes, so the hooks will be registered for any request that loads WordPress, even SHORTINIT - a lot of the hooks registered won't run anyways (that's already the case).
See #30947.


git-svn-id: https://develop.svn.wordpress.org/trunk@31168 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-12 16:39:39 +00:00
Scott Taylor 59e6292c0e In wp-includes/taxonomy.php:
The keyword `elseif` should be used instead of `else if` so that all control keywords look like single words.

See #30799.


git-svn-id: https://develop.svn.wordpress.org/trunk@31087 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-08 06:25:40 +00:00
Scott Taylor ca8fe1a7a4 Use the 'not_found' label when there are no items for a taxonomy in the terms list table.
Props SergeyBiryukov.
Fixes #30586.


git-svn-id: https://develop.svn.wordpress.org/trunk@31035 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-03 06:19:46 +00:00
Boone Gorges 4cead42b26 Introduce 'name' parameter for get_terms().
This enhancement requires a modification in the way that `wp_dropdown_categories()`
prepares its arguments for `get_terms()`, so that its unrelated 'name' param is
not mistaken for the new 'name' argument in `get_terms()`.

Props danielbachhuber.
Fixes #30611.

git-svn-id: https://develop.svn.wordpress.org/trunk@31024 602fd350-edb4-49c9-b593-d223f7449a82
2015-01-02 21:33:33 +00:00
Scott Taylor 32e0a1c7b8 Update/fix inline docs for update_object_term_cache().
Props DrewAPicture.
Fixes #30731.


git-svn-id: https://develop.svn.wordpress.org/trunk@31012 602fd350-edb4-49c9-b593-d223f7449a82
2014-12-31 18:11:22 +00:00
Sergey Biryukov b71e24216d Correct $taxonomies parameter description in get_terms() filters.
props dlh.
fixes #30851.

git-svn-id: https://develop.svn.wordpress.org/trunk@30994 602fd350-edb4-49c9-b593-d223f7449a82
2014-12-28 01:43:47 +00:00
Boone Gorges 6d5084ef1c Pass $resource_type to 'get_ancestors' filter.
The `$resource_type` argument was added to the `get_ancestors()` function in
[30141]. In that changeset, the documentation for the filter was updated to
indicate that it would receive `$resource_type` as a param, but the filter
itself was not updated accordingly.

Props tmatsuur, DrewAPicture.
Fixes #30843.

git-svn-id: https://develop.svn.wordpress.org/trunk@30993 602fd350-edb4-49c9-b593-d223f7449a82
2014-12-26 21:29:00 +00:00
Boone Gorges 5f1ad2d768 In wp_update_term(), limit duplicate slug checks to the same taxonomy as the updated term.
In 4.1 [30240], `wp_insert_term()` was modified to allow the creation of terms
with duplicate slugs, as long as the terms are in different taxonomies.
`wp_update_term()` didn't get the corresponding modification, with the result
that term updates fail when the term being updated shares a slug with an older
term, regardless of that older term's taxonomy.

Props ipm-frommen.
Fixes #30780 for trunk.

git-svn-id: https://develop.svn.wordpress.org/trunk@30985 602fd350-edb4-49c9-b593-d223f7449a82
2014-12-22 15:32:59 +00:00
Scott Taylor 218dd4fd6b For clarity, initialize some arrays that previously were only assigned via short circuit in loops.
See #30799.


git-svn-id: https://develop.svn.wordpress.org/trunk@30982 602fd350-edb4-49c9-b593-d223f7449a82
2014-12-20 22:46:53 +00:00
Boone Gorges b824d6f56c Update individual term caches in get_terms().
This was removed in [29915] as part of the attempt to add cache support to
`get_term_by()`. When that support was removed in [30900], it was not properly
restored.

This changeset includes a unit test to verify that the cache is properly primed
for terms found in `get_terms()`, as well as tests to verify the other cache
setting that was touched by [30900].

Fixes #30749. See #21760.

git-svn-id: https://develop.svn.wordpress.org/trunk@30954 602fd350-edb4-49c9-b593-d223f7449a82
2014-12-17 16:38:44 +00:00
Boone Gorges bf62165353 Remove caching for get_term_by() calls.
The new cache group scheme causes term invalidation to be overly broad, so
that busting the cache for one term will bust the cache for all terms in the
taxonomy. We'll have another go at more focused use of the 'last_changed'
incrementor in a future release.

Reverts [29915], [30073], [30080], [30108], [30112].
See #21760.

git-svn-id: https://develop.svn.wordpress.org/trunk@30900 602fd350-edb4-49c9-b593-d223f7449a82
2014-12-16 13:26:19 +00:00
Drew Jaynes (DrewAPicture) ae45b7462b Restore missing line in DocBlock for WP_Tax_Query::get_sql_for_clause().
Props kpdesign.
See [30622], #30469.


git-svn-id: https://develop.svn.wordpress.org/trunk@30759 602fd350-edb4-49c9-b593-d223f7449a82
2014-12-07 00:38:48 +00:00
Sergey Biryukov 8329b6f2a6 Fix a typo in [30546].
see #30473.

git-svn-id: https://develop.svn.wordpress.org/trunk@30727 602fd350-edb4-49c9-b593-d223f7449a82
2014-12-03 13:55:01 +00:00
Drew Jaynes (DrewAPicture) c12cce581e Use the correct hash notation syntax for the wp_insert_term() DocBlock.
See #28298.


git-svn-id: https://develop.svn.wordpress.org/trunk@30724 602fd350-edb4-49c9-b593-d223f7449a82
2014-12-03 10:16:04 +00:00
Scott Taylor ee388b9852 Improve various @param docs.
See #30224.


git-svn-id: https://develop.svn.wordpress.org/trunk@30673 602fd350-edb4-49c9-b593-d223f7449a82
2014-11-30 22:55:08 +00:00
Drew Jaynes (DrewAPicture) 2546b46f62 Docs Formatting: Backtick-escape inline code for all dynamic hook docs in wp-includes/taxonomy.php.
Affects DocBlocks for the following hooks:
* `get_$taxonomy`
* `edit_term_{$field}`
* `edit_{$taxonomy}_{$field}`
* `pre_term_{$field}`
* `pre_{$taxonomy}_{$field}`
* `term_{$field}_rss`
* `{$taxonomy}_{$field}_rss`
* `term_{$field}`
* `{$taxonomy}_{$field}`
* `delete_$taxonomy`
* `create_$taxonomy`
* `edit_$taxonomy`
* `edited_$taxonomy`

See #30552.


git-svn-id: https://develop.svn.wordpress.org/trunk@30654 602fd350-edb4-49c9-b593-d223f7449a82
2014-11-30 11:59:26 +00:00