wp_get_object_terms() – Retrieves the terms associated with the given object(s), in the supplied taxonomies.

You appear to be a bot. Output may be restricted

Description

Retrieves the terms associated with the given object(s), in the supplied taxonomies.

Usage

$WP_Term[]|WP_Error = wp_get_object_terms( $object_ids, $taxonomies, $args );

Parameters

$object_ids
( int|int[] ) required – The ID(s) of the object(s) to retrieve.
$taxonomies
( string|string[] ) required – The taxonomy names to retrieve terms from.
$args
( array|string ) optional – See WP_Term_Query::__construct() for supported arguments.

Returns

WP_Term[]|WP_Error Array of terms or empty array if no terms found. WP_Error if any of the taxonomies don't exist.

Source

File name: wordpress/wp-includes/taxonomy.php
Lines:

1 to 100 of 101
function wp_get_object_terms( $object_ids, $taxonomies, $args = array() ) {
  if ( empty( $object_ids ) || empty( $taxonomies ) ) {
    return array();
  }

  if ( ! is_array( $taxonomies ) ) {
    $taxonomies = array( $taxonomies );
  }

  foreach ( $taxonomies as $taxonomy ) {
    if ( ! taxonomy_exists( $taxonomy ) ) {
      return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) );
    }
  }

  if ( ! is_array( $object_ids ) ) {
    $object_ids = array( $object_ids );
  }
  $object_ids = array_map( 'intval', $object_ids );

  $args = wp_parse_args( $args );

  
/**
 * Filters arguments for retrieving object terms.
 *
 * @since 4.9.0
 *
 * @param array    $args       An array of arguments for retrieving terms for the given object(s).
 *                             See {@see wp_get_object_terms()} for details.
 * @param int[]    $object_ids Array of object IDs.
 * @param string[] $taxonomies Array of taxonomy names to retrieve terms from.
 */
  $args = apply_filters( 'wp_get_object_terms_args', $args, $object_ids, $taxonomies );

  /*
	 * When one or more queried taxonomies is registered with an 'args' array,
	 * those params override the `$args` passed to this function.
	 */
  $terms = array();
  if ( count( $taxonomies ) > 1 ) {
    foreach ( $taxonomies as $index => $taxonomy ) {
      $t = get_taxonomy( $taxonomy );
      if ( isset( $t->args ) && is_array( $t->args ) && array_merge( $args, $t->args ) != $args ) {
        unset( $taxonomies[ $index ] );
        $terms = array_merge( $terms, wp_get_object_terms( $object_ids, $taxonomy, array_merge( $args, $t->args ) ) );
      }
    }
  } else {
    $t = get_taxonomy( $taxonomies[0] );
    if ( isset( $t->args ) && is_array( $t->args ) ) {
      $args = array_merge( $args, $t->args );
    }
  }

  $args['taxonomy']   = $taxonomies;
  $args['object_ids'] = $object_ids;

  // Taxonomies registered without an 'args' param are handled here.
  if ( ! empty( $taxonomies ) ) {
    $terms_from_remaining_taxonomies = get_terms( $args );

    // Array keys should be preserved for values of $fields that use term_id for keys.
    if ( ! empty( $args['fields'] ) && 0 === strpos( $args['fields'], 'id=>' ) ) {
      $terms = $terms + $terms_from_remaining_taxonomies;
    } else {
      $terms = array_merge( $terms, $terms_from_remaining_taxonomies );
    }
  }

  
/**
 * Filters the terms for a given object or objects.
 *
 * @since 4.2.0
 *
 * @param WP_Term[] $terms      Array of terms for the given object or objects.
 * @param int[]     $object_ids Array of object IDs for which terms were retrieved.
 * @param string[]  $taxonomies Array of taxonomy names from which terms were retrieved.
 * @param array     $args       Array of arguments for retrieving terms for the given
 *                              object(s). See wp_get_object_terms() for details.
 */
  $terms = apply_filters( 'get_object_terms', $terms, $object_ids, $taxonomies, $args );

  $object_ids = implode( ',', $object_ids );
  $taxonomies = "'" . implode( "', '", array_map( 'esc_sql', $taxonomies ) ) . "'";

  
/**
 * Filters 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
 *
 * @param WP_Term[] $terms      Array of terms for the given object or objects.
 * @param string    $object_ids Comma separated list of object IDs for which terms were retrieved.
 * @param string    $taxonomies SQL fragment of taxonomy names from which terms were retrieved.
 * @param array     $args       Array of arguments for retrieving terms for the given
 *                              object(s). See wp_get_object_terms() for details.
 */
  return apply_filters( 'wp_get_object_terms', $terms, $object_ids, $taxonomies, $args );
 

 View on GitHub View on Trac