Qual é a diferença entre term_id e term_taxonomy_id

18

O título diz tudo. No momento em minhas taxonomias personalizadas, estou obtendo os termos usando o termo id e o nome da taxonomia.

Pensei que essa pergunta teria sido feita antes, mas não a encontrei em lugar algum! Então, só pensei em perguntar e ver se alguém tem alguma resposta.

    
por Daithí 02.01.2012 / 16:15

4 respostas

18

Se você der uma olhada na documentação do Wordpress, você encontrará Taxonomias Wordpress

  • term_id é o ID de um termo na tabela de termos
  • term_taxonomy_id é um ID exclusivo para o termo + par de taxonomia.
por Juan Ramón 02.01.2012 / 16:35
9

O Codex diz:

  • term_id é o ID de um termo na tabela de termos
  • term_taxonomy_id é uma ID exclusiva para o termo + par de taxonomia

O que isso significa?

Um termo é uma palavra. Pode pertencer a uma taxonomia, como tags, categorias ou uma taxonomia personalizada. A coisa é: pode haver várias taxonomias contendo o mesmo termo.

Digamos que você tenha um termo chamado "engorda". Esta palavra tem um número de identificação. Este é o term_id. Não depende de como essa palavra é usada, ou seja, em quais taxonomias o termo aparece.

Agora, a palavra "engordar" como tag de postagem também tem um número. Este é o term_taxonomy_id. Corresponde a "tag de postagem" engordar ".

Talvez você também tenha uma categoria chamada "engorda". Enquanto o term_id é o mesmo, o termo_taxonomy_id para “a categoria 'engorda'” é diferente.

    
por Ken.shinde 24.06.2016 / 05:51
5

Como isso faz parte de uma compreensão maior do design, vou descrevê-lo como um todo ...:)

No WP 4.5.3 ainda existem todas essas tabelas (vou falar sobre elas sem prefixo):

  • postagens
  • term_relationships
  • term_taxonomy
  • termos

O caminho para obter os nomes legíveis dos termos de postagem passa por todos eles.

postagens
o identificador principal aqui é ID - um id de um post (de qualquer tipo)

term_relationships
armazena pares de:
object_id - pode ser posts.ID (mas não tem que ser)
term_taxonomy_id - isto é NÃO id de um termo (categoria) mas um id de RELACIONAMENTO entre um termo (categoria) e taxonomia ("tipo de categoria")

term_taxonomy
o identificador principal aqui é term_taxonomy_id descrito acima ^^
outras colunas importantes:
term_id - um id de um termo (categoria) % taxonomy - armazena a taxonomia do termo ("tipo de categoria")

Este pode parecer engraçado, mas a intenção inicial era adicionar a capacidade de os termos terem mais taxonomias (o que em alguns casos pode fazer sentido).

termos
o principal identificador aqui é o term_id - um id de uma categoria
outras colunas importantes aqui são: % name - nome da categoria legível, por ex. "Gêneros musicais"
slug - a lesma de um termo utilizável, e. na URL

Então, o brutal demonstrando SQL para
obtenha todos os posts publicados e todas as suas categorias com nomes de categorias
poderia ser assim (adicione prefixos às tabelas ao testar no seu próprio WP DB):

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
    
por jave.web 23.06.2016 / 21:53
2
  

Um termo não é uma categoria ou tag por si só. Deve ser dado contexto através da tabela term_taxonomy.

     

A tabela term_taxonomy coloca um termo dentro de uma taxonomia. Isso é o que   faz um termo uma categoria , uma tag ou parte de uma taxonomia personalizada (ou em um   combinação de taxonomias).

     

term_id é o ID de um termo na tabela de termos.

     

term_taxonomy_id é uma ID exclusiva para o termo + par de taxonomia.

O term_id é sempre exclusivo, assim como o term_taxonomy_id . Ambos têm um Auto Increment na estrutura da tabela.

A tabela wp_term_taxonomy certifica-se, por exemplo, de que uma categoria é criada, por isso o wordpress pode interferir nela, por exemplo, o Woocommerce usa: product_tag , product_type , product_cat , todas elas são as chamadas taxonomias personalizadas. Essa tabela também vincula a estrutura pai / filho. Com sua coluna parent .

  

A tabela final, term_relationships, relaciona objetos como postagens ou links para um term_taxonomy_id da tabela term_taxonomy.

Se escolhermos o Woocommerce novamente como um exemplo, essa tabela vinculará o tipo de postagem products à taxonomia product_cat , que contém uma nomenclatura, por exemplo, Computadores, que é naturalmente recuperada da tabela wp_terms . Esta tabela contém os term_id , name , slug e term_group . (term_group eu pessoalmente nunca usei)

Espero que o texto acima torne as coisas um pouco mais claras sobre as diferenças e como o Wordpress usa essas tabelas.

    
por Rens Tillmann 17.11.2015 / 14:55