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
This commit is contained in:
Boone Gorges 2015-02-27 20:30:13 +00:00
parent c4adfac1b9
commit 22179be8ca
1 changed files with 23 additions and 5 deletions

View File

@ -2693,6 +2693,7 @@ function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
if ( '' !== $order && ! in_array( $order, array( 'ASC', 'DESC' ) ) ) if ( '' !== $order && ! in_array( $order, array( 'ASC', 'DESC' ) ) )
$order = 'ASC'; $order = 'ASC';
$taxonomy_array = $taxonomies;
$taxonomies = "'" . implode("', '", $taxonomies) . "'"; $taxonomies = "'" . implode("', '", $taxonomies) . "'";
$object_ids = implode(', ', $object_ids); $object_ids = implode(', ', $object_ids);
@ -2762,16 +2763,33 @@ function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
} elseif ( ! $objects ) { } elseif ( ! $objects ) {
$terms = array_values( array_unique( $terms ) ); $terms = array_values( array_unique( $terms ) );
} }
/** /**
* Filter the terms for a given object or objects. * Filter the terms for a given object or objects.
* *
* @since 4.2.0
*
* @param array $terms An array of terms for the given object or objects.
* @param int|array $object_ids Object ID or array of IDs.
* @param array $taxonomy_array Array of taxonomies from which `$terms` were retrieved.
* @param array $args An array of arguments for retrieving terms for the given object(s).
* See {@see wp_get_object_terms()} for details.
*/
$terms = apply_filters( 'get_object_terms', $terms, $object_ids, $taxonomy_array, $args );
/**
* Filter the terms for a given object or objects.
*
* The `$taxonomies` parameter passed to this filter is formatted as a SQL fragment. The
* {@see 'get_object_terms'} filter is recommended as an alternative.
*
* @since 2.8.0 * @since 2.8.0
* *
* @param array $terms An array of terms for the given object or objects. * @param array $terms An array of terms for the given object or objects.
* @param array|int $object_ids Object ID or array of IDs. * @param int|array $object_ids Object ID or array of IDs.
* @param array|string $taxonomies A taxonomy or array of taxonomies. * @param string $taxonomies SQL-formatted (comma-separated and quoted) list of taxonomy names.
* @param array $args An array of arguments for retrieving terms for * @param array $args An array of arguments for retrieving terms for the given object(s).
* the given object(s). * See {@see wp_get_object_terms()} for details.
*/ */
return apply_filters( 'wp_get_object_terms', $terms, $object_ids, $taxonomies, $args ); return apply_filters( 'wp_get_object_terms', $terms, $object_ids, $taxonomies, $args );
} }