Quelle est la différence entre term_id et term_taxonomy_id

18

Le titre dit tout. Pour le moment, dans mes taxonomies personnalisées, je reçois les termes en utilisant les termes id et taxonomy name.

Je pensais que cette question aurait été posée auparavant mais je ne la trouve nulle part! Donc, je pensais que je demanderais et verrais si quelqu'un avait des réponses.

    
posée Daithí 02.01.2012 - 16:15

4 réponses

18

Si vous consultez la documentation Wordpress, vous y trouverez des taxonomies Wordpress

.
  • term_id est l'ID d'un terme dans la table de termes
  • term_taxonomy_id est un identifiant unique pour la paire terme + taxonomie.
réponse donnée Juan Ramón 02.01.2012 - 16:35
9

Le Codex dit:

  • term_id est l'ID d'un terme de la table de termes
  • term_taxonomy_id est un identifiant unique pour la paire terme + taxonomie

Qu'est-ce que cela signifie?

Un terme est un mot. Il peut appartenir à une taxonomie, telle que des balises, des catégories ou une taxonomie personnalisée. Le problème est le suivant: il peut y avoir plusieurs taxonomies contenant le même terme.

Supposons que vous utilisiez un terme appelé «engraissement». Ce mot a un numéro d'identification. C'est le term_id. Cela ne dépend pas de la façon dont ce mot est utilisé, c’est-à-dire des taxonomies où il apparaît.

Le mot «engraissement» en tant que balise de publication porte également un numéro. C'est le term_taxonomy_id. Cela correspond à “l’étiquette de poste“ engraissement ”“.

Peut-être avez-vous également une catégorie appelée "engraissement". Si term_id est identique, term_taxonomy_id pour "la catégorie" engraissement "est différent.

    
réponse donnée Ken.shinde 24.06.2016 - 05:51
5

Comme cela fait partie d'une meilleure compréhension du design, je vais le décrire comme un tout ...>)

Dans le WP 4.5.3, il existe encore toutes ces tables (je vais en parler sans le préfixe ):

  • posts
  • relations_finales
  • term_taxonomy
  • termes

Le chemin pour obtenir les noms lisibles des termes de publication les passe tous.

messages L'identifiant principal ici est ID - l'identifiant d'une publication (de tout type)

relations de terme
stocke des paires de:
object_id - peut être posts.ID (mais pas ne doit pas l'être)
term_taxonomy_id - il s'agit PAS de identifiant d'un terme (catégorie) mais d'un identifiant de RELATION entre un terme (catégorie) et une taxonomie ("type de catégorie")

term_taxonomy L'identifiant principal est term_taxonomy_id ci-dessus ^^ Une autre colonne importante:
term_id - l'identifiant d'un terme (catégorie)
taxonomy - stocke la taxonomie du terme ("type de catégorie")

Cela peut sembler drôle, mais l’intention initiale était d’ajouter la possibilité que les termes aient plus de taxonomies (ce qui dans certains cas peut avoir un sens).

termes L'identifiant principal est le term_id , l'identifiant d'une catégorie. Voici une autre colonne importante:
name - nom de la catégorie lisible, par exemple. "Genres musicaux"
slug - le slug d'un terme utilisable, par exemple. dans l'URL

Ainsi, le brutal démontrant SQL à
obtenir tous les articles publiés et toutes leurs catégories avec les noms de catégories
pourrait ressembler à ceci (ajouter des préfixes aux tables lors des tests sur votre propre base de données WP):

SELECT * FROM
posts #gets posts
LEFT JOIN
term_relationships #gets posts relationships to term_taxonomies
ON(posts.ID=term_relationships.object_id)
LEFT JOIN
term_taxonomy #gets term_ids 
ON(term_relationships.term_taxonomy_id=term_taxonomy.term_taxonomy_id)
LEFT JOIN
terms #finally, gets terms' names
ON(term_taxonomy.term_id=terms.term_id)
WHERE (
    (posts.post_status='publish') 
    #optionally you can filter by a certain post_type:
    #AND
    #(posts.post_type='some_post_type')
)
ORDER BY posts.ID ASC
    
réponse donnée jave.web 23.06.2016 - 21:53
2
  

Un terme n'est pas une catégorie ni une balise en soi. Il doit être mis en contexte via la table term_taxonomy.

     

La table term_taxonomy place un terme dans une taxonomie. C'est quoi   fait d'un terme une catégorie , une balise ou une partie d'une taxonomie personnalisée (ou   combinaison de taxonomies).

     

term_id est l'ID d'un terme dans le tableau des termes.

     

term_taxonomy_id est un identifiant unique pour la paire terme + taxonomie.

Le term_id est toujours unique, tout comme le term_taxonomy_id . Les deux ont un Auto Increment dans la structure de la table.

La table wp_term_taxonomy s'assure, par exemple, qu'une catégorie est créée pour que Wordpress puisse l'interférer. Par exemple, Woocommerce utilise: product_tag , product_type , product_cat , toutes ces taxonomies sont dites. Cette table lie également la structure parent / enfants. Avec sa colonne parent .

  

La table finale, term_relationships, relie des objets, tels que des publications ou des liens, à un term_taxonomy_id de la table term_taxonomy.

Si nous reprenons Woocommerce à titre d'exemple, cette table lie le type de message products à leur taxonomie product_cat , qui contient un nom, par exemple, Ordinateurs, qui est bien sûr extrait de la table wp_terms . Cette table contient term_id , name , slug et term_group . (term_group je n'ai personnellement jamais utilisé)

Espérons que ce qui précède clarifie un peu les différences et explique comment Wordpress utilise ces tableaux.

    
réponse donnée Rens Tillmann 17.11.2015 - 14:55

Lire d'autres questions sur les étiquettes