Je veux obtenir les termes objet par les identifiants de messages donnés. Je ne connais pas grand-chose à propos de SQL, ce qui est un peu compliqué pour moi. Voici ce que j'ai essayé:
global $wpdb;
$taxonomy = 'category'
$term= $wpdb->prefix.'terms';
$relations= $wpdb->prefix.'term_relationships';
$taxo = $wpdb->prefix.'term_taxonomy';
$sql = "SELECT $term.*, $relations.*, $taxo.*
FROM $term
JOIN $relations
ON $term.term_id = '$taxo.term_id'
JOIN $taxo
ON $relations.term_taxonomy_id = $taxo.term_taxonomy_id
WHERE $taxo.taxonomy = '$taxonomy' AND $relations.object_id IN (116,118)
GROUP BY $term.term_id";
$values = $wpdb->get_results($sql, ARRAY_A);
Je ne sais pas ce qui ne va pas. Ça ne marche pas.
Il n'est pas conseillé d'utiliser des requêtes SQL personnalisées s'il existe déjà des fonctions dans Wordpress qui effectuent déjà le travail.
Pour ce faire, vous pouvez simplement utiliser wp_get_object_terms()
. Le premier paramètre $object_ids
prend une chaîne ou un tableau d'identifiants d'objet. Dans votre cas, vous pouvez utiliser un tableau de vos identifiants de publication. Cela permettra de récupérer tous les termes associés à la publication/à la publication donnée.
Voici un exemple
$terms = wp_get_object_terms( array(394,530), 'category' );
if ( ! empty( $terms ) ) {
if ( ! is_wp_error( $terms ) ) {
foreach( $terms as $term ) {
?><pre><?php var_dump($term); ?></pre><?php
}
}
}
Cela vous donnera la sortie suivante
object(stdClass)#494 (10) {
["term_id"]=>
int(115)
["name"]=>
string(8) "child-01"
["slug"]=>
string(7) "child01"
["term_group"]=>
int(0)
["term_taxonomy_id"]=>
int(115)
["taxonomy"]=>
string(8) "category"
["description"]=>
string(0) ""
["parent"]=>
int(21)
["count"]=>
int(2)
["filter"]=>
string(3) "raw"
}