web-dev-qa-db-fra.com

Quelle est la différence entre term_id et term_taxonomy_id

Le titre dit tout. Pour le moment, dans mes taxonomies personnalisées, les termes sont utilisés sous les termes id et taxonomy name.

Je pensais que cette question aurait été posée auparavant mais ne la trouve nulle part! Alors juste pensé que je demanderais et voir si quelqu'un a des réponses.

20
Daithí

Si vous parcourez la documentation Wordpress, vous trouverez Les 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.
18
Juan Ramón

Le Codex dit:

  • 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

Qu'est-ce que ça veut dire?

Un terme est une parole. 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.

Disons que vous avez un terme appelé "engraissement". Ce mot a un numéro d'identification. C'est le term_id. Cela ne dépend pas de la manière dont ce mot est utilisé, c’est-à-dire dans quelles taxonomies le terme apparaît.

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

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

9
Ken.shinde

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

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

  • des postes
  • terme_relations
  • term_taxonomy
  • termes

Le chemin pour obtenir les noms lisibles des conditions de publication les traverse tous.

des postes
l'identifiant principal ici est ID - l'identifiant d'un message (de tout type)

term_relationships
stocke des paires de:
object_id - can be posts.ID (mais not doit l'être)
term_taxonomy_id- c'estPASid d'un terme (catégorie) mais un id deRELATIONentre un terme (catégorie) et taxonomie ("type de catégorie")

term_taxonomy
l'identifiant principal ici estterm_taxonomy_iddécrit 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")

Celui-ci peut sembler amusant, 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 ici est leterm_id- un identifiant d'une catégorie
Voici une autre colonne importante:
name - nom de catégorie lisible, par exemple. "Genres musicaux"
slug - le slug d'un terme utilisable, par ex. dans l'URL

Donc, 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
5
jave.web

Un terme n'est pas une catégorie ou 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 ce qui fait d'un terme un catégorie , un étiquette ou une partie d'une taxonomie personnalisée (ou une combinaison de taxonomies).

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.

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, afin que wordpress puisse l'interférer, par exemple Woocommerce utilise: product_tag, product_type, product_cat, toutes sont des taxonomies personnalisées. 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 l'exemple de Woocommerce, 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 les term_id, name, slug et term_group. (term_group je n'ai personnellement jamais utilisé)

Espérons que ce qui précède rend les choses un peu plus claires sur les différences et sur la manière dont Wordpress utilise ces tableaux.

2
Rens Tillmann