web-dev-qa-db-fra.com

Requête personnalisée pour obtenir les termes des identifiants de publication

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.

2
dev-jim

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"
}
2
Pieter Goosen