Respostas:
Se você der uma olhada na documentação do Wordpress, encontrará Taxonomias do Wordpress
term_id
um agora ocorrerá apenas uma vez na term_taxonomy
tabela (antes da coluna não ser exclusiva e os termos poderem ser compartilhados entre taxonomias). Isso pode continuar evoluindo no futuro, com base no roteiro da taxonomia . Uma parte disso é combinar o termo e as tabelas de taxonomia de termos .
O Codex diz:
O que isto significa?
Um termo é uma palavra. Pode pertencer a uma taxonomia, como tags, categorias ou uma taxonomia customizada. A questão é: 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 "engorda" como tag de postagem também tem um número. Este é o term_taxonomy_id. Corresponde à "tag post 'engorda'".
Talvez você também tenha uma categoria chamada "engorda". Embora o term_id seja o mesmo, o term_taxonomy_id para "a categoria 'engorda'" é diferente.
Como isso faz parte de uma maior compreensão do design, descreverei-o como um todo ... :)
No WP 4.5.3, ainda existem todas essas tabelas (falarei sobre elas sem prefixo):
O caminho para obter os nomes legíveis dos termos de postagem passa por todos eles.
publica
o identificador principal aqui ID
- um ID de uma publicação (de qualquer tipo)
term_relationships
armazena pares de:
object_id
- pode ser posts.ID
(mas não precisa ser)
term_taxonomy_id
- NÃO é 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 está 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 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 exemplo, "Gêneros de Música"
slug
- a lesma de um termo utilizável, por exemplo, no URL
Portanto, o SQL brutal demonstrativo para
obter todas as postagens publicadas e todas as suas categorias com nomes de categorias
pode se parecer com isso (adicione prefixos às tabelas ao testar em 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
Um termo não é uma categoria ou tag por si só. Ele deve receber contexto por meio da tabela term_taxonomy.
A tabela term_taxonomy coloca um termo dentro de uma taxonomia. É isso que faz de um termo uma categoria , uma tag ou parte de uma taxonomia personalizada (ou em uma combinação de taxonomias).
term_id
é o ID de um termo na tabela de termos.
term_taxonomy_id
é um ID exclusivo para o termo + par taxonomia.
O term_id
é sempre único, assim como o term_taxonomy_id
. Ambos têm uma Auto Increment
estrutura na tabela.
A tabela wp_term_taxonomy
torna-se, por exemplo, que uma categoria é criada, então wordpress pode interferir com ele usa por exemplo WooCommerce: product_tag
, product_type
, product_cat
, todos eles são os chamados taxonomias personalizadas. Esta tabela também liga a estrutura pai / filhos. Com sua coluna parent
.
A tabela final, term_relationships, relaciona objetos como postagens ou links a um term_taxonomy_id da tabela term_taxonomy.
Se escolhermos novamente o Woocommerce como exemplo, esta tabela vinculará o tipo de postagem products
à taxonomia deles product_cat
, que contém um nome, por exemplo, computadores, que é obviamente recuperado da tabela wp_terms
. Esta tabela contém a term_id
, name
, slug
e term_group
. (term_group que pessoalmente nunca usei)
Espero que o exposto torne as coisas um pouco mais claras sobre as diferenças e como o Wordpress usa essas tabelas.