Qual è la differenza tra term_id e term_taxonomy_id

2 gen 2012, 17:15:54
Visualizzazioni: 31.2K
Voti: 39

Il titolo dice tutto. Al momento, nelle mie tassonomie personalizzate, sto recuperando i termini utilizzando l'ID del termine e il nome della tassonomia.

Pensavo che questa domanda fosse già stata posta prima, ma non riesco a trovarla da nessuna parte! Quindi ho pensato di chiedere e vedere se qualcuno ha delle risposte.

0
Tutte le risposte alla domanda 5
4
35

Se dai un'occhiata alla documentazione di Wordpress troverai Tassonomie di Wordpress

  • term_id è l'ID di un termine nella tabella dei termini
  • term_taxonomy_id è un ID univoco per la coppia termine + tassonomia.
2 gen 2012 17:35:34
Commenti

quindi manipolare e recuperare i termini basandosi solo sul term_id non causerebbe duplicati allora?

Daithí Daithí
2 gen 2012 20:51:29

in realtà ho appena risposto all'ultima domanda. Ho dato un'occhiata alla tabella wp_terms e sì, usare solo il term_id è sicuro. Grazie per la tua risposta @Juan

Daithí Daithí
2 gen 2012 20:55:57

Giusto una nota che in WordPress 4.2 tutti i termini sono stati separati, il che significa che ogni term_id ora apparirà una sola volta nella tabella term_taxonomy (prima la colonna non era univoca e i termini potevano essere condivisi tra tassonomie). Questo potrebbe continuare a evolversi in futuro, in base alla roadmap delle tassonomie. Una parte di questo è combinare le tabelle dei termini e delle tassonomie.

J.D. J.D.
19 apr 2016 22:04:32

@J.D. è così frustrante che dopo 8 anni quelle tabelle non siano ancora state combinate

Steve Moretz Steve Moretz
23 nov 2022 11:27:59
0
19

Il Codex dice:

  • term_id è l'ID di un termine nella tabella terms
  • term_taxonomy_id è un ID univoco per la coppia termine+tassonomia

Cosa significa?

Un termine è una parola. Può appartenere a una tassonomia, come tag, categorie o una tassonomia personalizzata. Il punto è: possono esserci diverse tassonomie che contengono lo stesso termine.

Supponiamo che tu abbia un termine chiamato "ingrassante". Questa parola ha un numero ID. Questo è il term_id. Non dipende da come questa parola viene utilizzata, cioè in quali tassonomie appare il termine.

Ora la parola "ingrassante" come tag di un post ha anche un numero. Questo è il term_taxonomy_id. Corrisponde a "il tag 'ingrassante'".

Forse hai anche una categoria chiamata "ingrassante". Mentre il term_id è lo stesso, il term_taxonomy_id per "la categoria 'ingrassante'" è diverso.

24 giu 2016 06:51:25
1
11

Poiché questo fa parte di una comprensione più ampia del design, lo descriverò nel suo insieme... :)

In WP 4.5.3 ci sono ancora tutte queste tabelle (ne parlerò senza prefisso):

  • posts
  • term_relationships
  • term_taxonomy
  • terms

Il percorso per ottenere i nomi leggibili dei termini dei post passa attraverso tutte queste tabelle.

posts
l'identificatore principale qui è ID - un id di un post (di qualsiasi tipo)

term_relationships
memorizza coppie di:
object_id - può essere posts.ID (ma non deve esserlo necessariamente)
term_taxonomy_id - questo NON è l'id di un termine (categoria) ma un id della RELAZIONE tra un termine (categoria) e una tassonomia ("tipo di categoria")

term_taxonomy
l'identificatore principale qui è term_taxonomy_id descritto sopra ^^
altre colonne importanti:
term_id - un id di un termine (categoria)
taxonomy - memorizza la tassonomia del termine ("tipo di categoria")

Questo potrebbe sembrare divertente, ma l'intenzione iniziale era aggiungere la capacità per i termini di avere più tassonomie (che in alcuni casi può avere senso).

terms
l'identificatore principale qui è il term_id - un id di una categoria
altre colonne importanti qui sono:
name - nome leggibile della categoria, ad esempio "Generi musicali"
slug - lo slug di un termine utilizzabile ad esempio negli URL

Quindi la brutale dimostrazione SQL per
ottenere tutti i post pubblicati e tutte le loro categorie con i nomi delle categorie
potrebbe essere questa (aggiungi i prefissi alle tabelle quando testi sul tuo database WP):

SELECT * FROM
posts #ottiene i post
LEFT JOIN
term_relationships #ottiene le relazioni dei post con term_taxonomies
ON(posts.ID=term_relationships.object_id)
LEFT JOIN
term_taxonomy #ottiene gli term_ids 
ON(term_relationships.term_taxonomy_id=term_taxonomy.term_taxonomy_id)
LEFT JOIN
terms #finalmente, ottiene i nomi dei termini
ON(term_taxonomy.term_id=terms.term_id)
WHERE (
    (posts.post_status='publish') 
    #opzionalmente puoi filtrare per un certo post_type:
    #AND
    #(posts.post_type='some_post_type')
)
ORDER BY posts.ID ASC
23 giu 2016 22:53:59
Commenti

Di gran lunga la spiegazione più chiara in questa discussione... Grazie!

Andrew Odri Andrew Odri
15 set 2021 22:09:39
0

Un termine non è una categoria o un tag di per sé. Deve essere contestualizzato tramite la tabella term_taxonomy.

La tabella term_taxonomy assegna un termine a una tassonomia. Questo è ciò che rende un termine una categoria, un tag o parte di una tassonomia personalizzata (o in una combinazione di tassonomie).

term_id è l'ID di un termine nella tabella terms.

term_taxonomy_id è un ID univoco per la coppia termine+tassonomia.

Il term_id è sempre univoco così come il term_taxonomy_id. Entrambi hanno un Auto Increment nella struttura della tabella.

La tabella wp_term_taxonomy assicura, ad esempio, che una categoria venga creata, in modo che WordPress possa interagirci. Ad esempio, WooCommerce utilizza: product_tag, product_type, product_cat, tutti loro sono le cosiddette tassonomie personalizzate. Questa tabella stabilisce anche la struttura genitore/figlio. Con la sua colonna parent.

L'ultima tabella, term_relationships, collega oggetti come post o link a un term_taxonomy_id dalla tabella term_taxonomy.

Se prendiamo di nuovo WooCommerce come esempio, questa tabella collega il tipo di post products alla loro tassonomia product_cat, che contiene un nome, ad esempio Computer, che ovviamente è recuperato dalla tabella wp_terms. Questa tabella contiene term_id, name, slug e term_group. (term_group personalmente non l'ho mai usato)

Speriamo che quanto sopra renda le cose un po' più chiare riguardo alle differenze e a come WordPress utilizza queste tabelle.

17 nov 2015 15:55:40
0

L'articolo "Comprendere e lavorare con le tassonomie e i termini in WordPress" spiega il motivo per cui vengono utilizzate due tabelle separate - wp_term e wp_term_taxonomy:

In molte installazioni WordPress, ci sarà un record nella tabella wp_term_taxonomy per ogni termine nella tabella wp_terms, ma in alcuni casi avrai più di un record per ogni termine. Questo accade quando crei due termini con lo stesso nome e slug in tassonomie diverse, e significa che potresti creare una query per visualizzare post con quel termine in più tassonomie.

Ciò significa che la relazione tra queste due tabelle è uno-a-molti: un record nella tabella wp_terms può essere collegato a più record nella tabella wp_term_taxonomy, ma ogni record in wp_term_taxonomy è collegato a un solo record in wp_terms.

1 feb 2020 10:41:59