Allow attachment taxonomies to be fetched as objects.

By adding the `$output` parameter to `get_attachment_taxonomies()`, the
function signature matches that of `get_object_taxonomies()`. The change
also allows for more consistent behavior when passing `output=objects`
to `get_object_taxonomies()` for the 'attachment' object type, since
the `$output` parameter is now passed through the function stack.

Props codemovement.pk.
See #37368.
Built from https://develop.svn.wordpress.org/trunk@38292


git-svn-id: http://core.svn.wordpress.org/trunk@38233 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Boone Gorges 2016-08-20 17:35:31 +00:00
parent 188c568204
commit 344c88d39f
3 changed files with 12 additions and 6 deletions

View File

@ -2694,11 +2694,15 @@ function adjacent_image_link( $prev = true, $size = 'thumbnail', $text = false )
* Retrieves taxonomies attached to given the attachment. * Retrieves taxonomies attached to given the attachment.
* *
* @since 2.5.0 * @since 2.5.0
* @since 4.7.0 Introduced the `$output` parameter.
* *
* @param int|array|object $attachment Attachment ID, data array, or data object. * @param int|array|object $attachment Attachment ID, data array, or data object.
* @param string $output Output type. 'names' to return an array of taxonomy names,
* or 'objects' to return an array of taxonomy objects.
* Default is 'names'.
* @return array Empty array on failure. List of taxonomies on success. * @return array Empty array on failure. List of taxonomies on success.
*/ */
function get_attachment_taxonomies( $attachment ) { function get_attachment_taxonomies( $attachment, $output = 'names' ) {
if ( is_int( $attachment ) ) { if ( is_int( $attachment ) ) {
$attachment = get_post( $attachment ); $attachment = get_post( $attachment );
} elseif ( is_array( $attachment ) ) { } elseif ( is_array( $attachment ) ) {
@ -2723,9 +2727,11 @@ function get_attachment_taxonomies( $attachment ) {
} }
$taxonomies = array(); $taxonomies = array();
foreach ( $objects as $object ) foreach ( $objects as $object ) {
if ( $taxes = get_object_taxonomies($object) ) if ( $taxes = get_object_taxonomies( $object, $output ) ) {
$taxonomies = array_merge($taxonomies, $taxes); $taxonomies = array_merge( $taxonomies, $taxes );
}
}
return array_unique($taxonomies); return array_unique($taxonomies);
} }

View File

@ -181,7 +181,7 @@ function get_object_taxonomies( $object, $output = 'names' ) {
if ( is_object($object) ) { if ( is_object($object) ) {
if ( $object->post_type == 'attachment' ) if ( $object->post_type == 'attachment' )
return get_attachment_taxonomies($object); return get_attachment_taxonomies( $object, $output );
$object = $object->post_type; $object = $object->post_type;
} }

View File

@ -4,7 +4,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '4.7-alpha-38291'; $wp_version = '4.7-alpha-38292';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.