On this page
wp_get_object_terms( int|int[] $object_ids, string|string[] $taxonomies, array|string $args = array() ): WP_Term[]|int[]|string[]|string|WP_Error
Retrieves the terms associated with the given object(s), in the supplied taxonomies.
Parameters
$object_idsint|int[] Required-
The ID(s) of the object(s) to retrieve.
$taxonomiesstring|string[] Required-
The taxonomy names to retrieve terms from.
$argsarray|string Optional-
See WP_Term_Query::__construct() for supported arguments.
More Arguments from WP_Term_Query::__construct( ... $query )
Array or query string of term query parameters.
taxonomystring|string[]Taxonomy name, or array of taxonomy names, to which results should be limited.object_idsint|int[]Object ID, or array of object IDs. Results will be limited to terms associated with these objects.orderbystringField(s) to order terms by. Accepts:
- Term fields (
'name','slug','term_group','term_id','id','description','parent','term_order'). Unless$object_idsis not empty,'term_order'is treated the same as'term_id'. 'count'to use the number of objects associated with the term.'include'to match the'order'of the$includeparam.'slug__in'to match the'order'of the$slugparam.'meta_value''meta_value_num'.- The value of
$meta_key. - The array keys of
$meta_query. 'none'to omit the ORDER BY clause.
'name'.- Term fields (
orderstringWhether to order terms in ascending or descending order.
Accepts'ASC'(ascending) or'DESC'(descending).
Default'ASC'.hide_emptybool|intWhether to hide terms not assigned to any posts. Accepts1|trueor0|false. Default1|true.includeint[]|stringArray or comma/space-separated string of term IDs to include.
Default empty array.excludeint[]|stringArray or comma/space-separated string of term IDs to exclude.
If$includeis non-empty,$excludeis ignored.
Default empty array.exclude_treeint[]|stringArray or comma/space-separated string of term IDs to exclude along with all of their descendant terms. If$includeis non-empty,$exclude_treeis ignored. Default empty array.numberint|stringMaximum number of terms to return. Accepts(all) or any positive number. Default''|0(all). Note that''|0$numbermay not return accurate results when coupled with$object_ids.
See #41796 for details.offsetintThe number by which to offset the terms query.fieldsstringTerm fields to query for. Accepts:
'all'Returns an array of complete term objects (WP_Term[]).'all_with_object_id'Returns an array of term objects with the'object_id'param (WP_Term[]). Works only when the$object_idsparameter is populated.'ids'Returns an array of term IDs (int[]).'tt_ids'Returns an array of term taxonomy IDs (int[]).'names'Returns an array of term names (string[]).'slugs'Returns an array of term slugs (string[]).'count'Returns the number of matching terms (int).'id=>parent'Returns an associative array of parent term IDs, keyed by term ID (int[]).'id=>name'Returns an associative array of term names, keyed by term ID (string[]).'id=>slug'Returns an associative array of term slugs, keyed by term ID (string[]).
'all'.countboolWhether to return a term count. If true, will take precedence over$fields. Default false.namestring|string[]Name or array of names to return term(s) for.
slugstring|string[]Slug or array of slugs to return term(s) for.
term_taxonomy_idint|int[]Term taxonomy ID, or array of term taxonomy IDs, to match when querying terms.hierarchicalboolWhether to include terms that have non-empty descendants (even if$hide_emptyis set to true). Default true.searchstringSearch criteria to match terms. Will be SQL-formatted with wildcards before and after.name__likestringRetrieve terms with criteria by which a term is LIKE$name__like.description__likestringRetrieve terms where the description is LIKE$description__like.pad_countsboolWhether to pad the quantity of a term's children in the quantity of each term's "count" object variable. Default false.getstringWhether to return terms regardless of ancestry or whether the terms are empty. Accepts'all'or''(disabled). Default''.child_ofintTerm ID to retrieve child terms of. If multiple taxonomies are passed,$child_ofis ignored. Default 0.parentintParent term ID to retrieve direct-child terms of.
childlessboolTrue to limit results to terms that have no children.
This parameter has no effect on non-hierarchical taxonomies.
Default false.cache_domainstringUnique cache key to be produced when this query is stored in an object cache. Default'core'.update_term_meta_cacheboolWhether to prime meta caches for matched terms. Default true.meta_keystring|string[]Meta key or keys to filter by.meta_valuestring|string[]Meta value or values to filter by.meta_comparestringMySQL operator used for comparing the meta value.
See WP_Meta_Query::__construct() for accepted values and default value.meta_compare_keystringMySQL operator used for comparing the meta key.
See WP_Meta_Query::__construct() for accepted values and default value.meta_typestringMySQL data type that the meta_value column will be CAST to for comparisons.
See WP_Meta_Query::__construct() for accepted values and default value.meta_type_keystringMySQL data type that the meta_key column will be CAST to for comparisons.
See WP_Meta_Query::__construct() for accepted values and default value.meta_queryarrayAn associative array of WP_Meta_Query arguments.
See WP_Meta_Query::__construct() for accepted values.
Default:
array()
Return
WP_Term[]|int[]|string[]|string|WP_Error Array of terms, a count thereof as a numeric string, or WP_Error if any of the taxonomies do not exist.
See WP_Term_Query::get_terms() for more information.
More Information
It should be noted that the results from wp_get_object_terms are not cached which will result in a db call everytime this function is called. For performance, functions like get_the_terms() (which the results of has been cached), should be used.
Source
File: wp-includes/taxonomy.php. View all references
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[]|int[]|string[]|string $terms Array of terms or a count thereof as a numeric string.
* @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[]|int[]|string[]|string $terms Array of terms or a count thereof as a numeric string.
* @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 );
}
Hooks
- apply_filters( 'get_object_terms',
WP_Term[]|int[]|string[]|string $terms ,int[] $object_ids ,string[] $taxonomies ,array $args ) -
Filters the terms for a given object or objects.
- apply_filters( 'wp_get_object_terms',
WP_Term[]|int[]|string[]|string $terms ,string $object_ids ,string $taxonomies ,array $args ) -
Filters the terms for a given object or objects.
- apply_filters( 'wp_get_object_terms_args',
array $args ,int[] $object_ids ,string[] $taxonomies ) -
Filters arguments for retrieving object terms.
Related
Uses
| Uses | Description |
|---|---|
| wp_get_object_terms() wp-includes/taxonomy.php | Retrieves the terms associated with the given object(s), in the supplied taxonomies. |
| get_terms() wp-includes/taxonomy.php | Retrieves the terms in a given taxonomy or list of taxonomies. |
| taxonomy_exists() wp-includes/taxonomy.php | Determines whether the taxonomy name exists. |
| __() wp-includes/l10n.php | Retrieves the translation of $text. |
| wp_parse_args() wp-includes/functions.php | Merges user defined arguments into defaults array. |
| get_taxonomy() wp-includes/taxonomy.php | Retrieves the taxonomy object of $taxonomy. |
| apply_filters() wp-includes/plugin.php | Calls the callback functions that have been added to a filter hook. |
| WP_Error::__construct() wp-includes/class-wp-error.php | Initializes the error. |
Used By
| Used By | Description |
|---|---|
| WP_REST_Terms_Controller::get_items() wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php | Retrieves terms associated with a taxonomy. |
| wxr_post_taxonomy() wp-admin/includes/export.php | Outputs list of taxonomy terms, in XML tag format, associated with a post. |
| get_terms_to_edit() wp-admin/includes/taxonomy.php | Gets comma-separated list of terms available to edit for the given post ID. |
| get_inline_data() wp-admin/includes/template.php | Adds hidden fields with the data for use in the inline editor for posts and pages. |
| wp_terms_checklist() wp-admin/includes/template.php | Outputs an unordered list of checkbox input elements labelled with term names. |
| wp_popular_terms_checklist() wp-admin/includes/template.php | Retrieves a list of the most popular terms from the specified taxonomy. |
| get_attachment_fields_to_edit() wp-admin/includes/media.php | Retrieves the attachment fields to edit form fields. |
| get_compat_media_markup() wp-admin/includes/media.php | |
| bulk_edit_posts() wp-admin/includes/post.php | Processes the post data for the bulk editing of posts. |
| wp_get_link_cats() wp-admin/includes/bookmark.php | Retrieves the link category IDs associated with the link specified. |
| get_the_terms() wp-includes/category-template.php | Retrieves the terms of the taxonomy that are attached to the post. |
| update_object_term_cache() wp-includes/taxonomy.php | Updates the cache for the given term object ID(s). |
| get_the_taxonomies() wp-includes/taxonomy.php | Retrieves all taxonomies associated with a post. |
| is_object_in_term() wp-includes/taxonomy.php | Determines if the given object is associated with any of the given terms. |
| wp_get_object_terms() wp-includes/taxonomy.php | Retrieves the terms associated with the given object(s), in the supplied taxonomies. |
| wp_set_object_terms() wp-includes/taxonomy.php | Creates term and taxonomy relationships. |
| wp_delete_object_term_relationships() wp-includes/taxonomy.php | Unlinks the object from the taxonomy or taxonomies. |
| wp_delete_term() wp-includes/taxonomy.php | Removes a term from the database. |
| get_adjacent_post() wp-includes/link-template.php | Retrieves the adjacent post. |
| get_boundary_post() wp-includes/link-template.php | Retrieves the boundary post. |
| _wp_menu_item_classes_by_context() wp-includes/nav-menu-template.php | Adds the class property classes for the current context, if applicable. |
| _update_term_count_on_transition_post_status() wp-includes/post.php | Updates the custom taxonomies’ term counts when a post’s status is changed. |
| wp_get_post_categories() wp-includes/post.php | Retrieves the list of categories for a post. |
| wp_get_post_terms() wp-includes/post.php | Retrieves the terms for a post. |
| wp_insert_post() wp-includes/post.php | Inserts or update a post. |
| get_bookmark() wp-includes/bookmark.php | Retrieves bookmark data. |
| wp_xmlrpc_server::_prepare_post() wp-includes/class-wp-xmlrpc-server.php | Prepares post data for return in an XML-RPC object. |
Changelog
| Version | Description |
|---|---|
| 4.7.0 | Refactored to use WP_Term_Query, and to support any WP_Term_Query arguments. |
| 4.4.0 | Introduced $meta_query and $update_term_meta_cache arguments. When $fields is 'all' or 'all_with_object_id', an array of WP_Term objects will be returned. |
| 4.2.0 | Added support for 'taxonomy', 'parent', and 'term_taxonomy_id' values of $orderby.Introduced $parent argument. |
| 2.3.0 | Introduced. |
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/wp_get_object_terms