wp_get_object_terms( int|int[] $object_ids, string|string[] $taxonomies, array|string $args = array() )
Retourne les termes associés aux ids d'objets donnés, en fournissant les taxonomies correspondantes.
Paramètres
$object_ids
(int|int[])requisLes IDs d'objet à récupérer.
$taxonomies
(string|string[])requisLes noms de taxonomie à partir desquels récupérer les termes.
$args
(array|string)optionnelVoir
WP_Term_Query::__construct()
pour les arguments supportés.Valeur par défaut : array()
Description / Informations supplémentaires
On peut noter que les résultats de wp_get_object_terms()
ne sont pas mis en cache. Pour une question de performance on peut utiliser get_the_terms()
dont les résultats sont mis en cache.
Retourne
(WP_Term[]|int[]|string[]|string|WP_Error) Le tableau de termes, leur nombre sous forme de chaîne numérique ou WP_Error
si l'une des taxonomies n'existe pas.
Voir WP_Term_Query::get_terms()
pour plus d'informations.
Déclaration et structure de la fonction wp_get_object_terms()
wp_get_object_terms()
est déclarée dans le fichier wp-includes/taxonomy.php
à la ligne 2253 :
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 );
$defaults = array(
'update_term_meta_cache' => false,
);
$args = wp_parse_args( $args, $defaults );
/**
* 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'] ) && str_starts_with( $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 );
}
Fonctions utilisées par wp_get_object_terms()
wp_get_object_terms()
Retourne les termes associés aux ids d'objets donnés, en fournissant les taxonomies correspondantes.
get_terms()
Retourne les termes pour une taxonomie donnée ou une liste de taxonomies.
taxonomy_exists()
Détermine si un nom de taxonomie existe.
wp_parse_args()
Fusionne des arguments définis par l'utilisateur dans un tableau par défaut.
get_taxonomy()
Retourne l'objet d'une taxonomie en donnant son nom.
apply_filters()
Appel les fonctions qui ont été attachées à un filtre spécifique.
Hooks utilisés par wp_get_object_terms()
get_object_terms
Filtre les termes pour un ou plusieurs objets donnés.
wp_get_object_terms
Filtre les termes pour un ou plusieurs objets donnés.
wp_get_object_terms_args
Filtre les arguments pour récupérer les termes de l'objet.
Où est utilisée la fonction wp_get_object_terms()
dans le CMS WordPress
Exemples
$product_terms = wp_get_object_terms( $post->ID, 'product' );
if ( ! empty( $product_terms ) ) {
if ( ! is_wp_error( $product_terms ) ) {
echo '<ul>';
foreach( $product_terms as $term ) {
echo '<li><a href="' . esc_url( get_term_link( $term->slug, 'product' ) ) . '">' . esc_html( $term->name ) . '</a></li>';
}
echo '</ul>';
}
}
$exclude_post_id = $post->ID;
$taxchoice = 'download_tag';
$custom_taxterms = wp_get_object_terms( $post->ID, $taxchoice, array('fields' => 'ids') );
$arguments = array(
'post_type' => 'download',
'post_status' => 'publish',
'posts_per_page' => 3,
'orderby' => 'rand',
'ignore_sticky_posts' => 1,
'post__not_in' => array($post->ID, '81099'),
'ignore_sticky_posts'=>1,
'tax_query' => array(
array(
'taxonomy' => $taxchoice,
'field' => 'id',
'terms' => $custom_taxterms
)
)
);
$post_query = new WP_Query($arguments);
Sources
Codex WordPress : wp_get_object_terms()
Autres fonctions dans le même fichier : wp-includes/taxonomy.php