Uma pergunta relacionada à WPSE pergunta como obter o termo especificando apenas ID, sem especificar taxonomia. Minha pergunta é mais filosófica. Geralmente, as coisas no núcleo do WP existem por um motivo. Estou tentando entender por que term_id não pode ser a chave principal do termo - por que precisamos da taxonomia também? Um registro de um único termo pode ser membro de múltiplas taxonomias? Certamente, isso atualmente não é suportado na API. Existe um caso de uso em que isso possa ser desejável?
Ou é o $taxonomy
parâmetro necessário em get_term()
uma cauda vestigial de uma encarnação anterior da estrutura do banco de dados?
wp_term_taxonomy
tabela é usado como índice para essa tabela, o que torna a consulta mais rápida (mesmo que seja apenas um termo).EXPLAIN
dizterm_id
.Respostas:
Eu registrei um ticket contra isso com trac: http://core.trac.wordpress.org/ticket/20536
No entanto, acontece que, por enquanto, é necessário, pois o WordPress atualmente (desde a versão 2.x) tem um bug que associa dois termos com o mesmo nome ao mesmo term_id! Portanto, é possível (embora incorreto) associar um único termo a mais de uma taxonomia. Veja este bug: http://core.trac.wordpress.org/ticket/5809
É bastante abrangente, portanto, a implementação da correção precisará ser testada em unidade com muito cuidado. Tentarei lembrar de atualizar esta pergunta se houver algum desenvolvimento.
fonte
Não. Os termos têm lesmas para suportar arquivos de termos. E ter as lesmas duas vezes traz muitos minetraps ou "wontfix" es em alguns cenários de link permanente.
Sim: imagine que você tenha termos para, por exemplo,
size
e tenha três taxonomias nomeadaslength
,width
eheight
(você também pode pensar em cores). Mas isso não é suportado pelos motivos mencionados acima.Olhando para a tabela e executando um
EXPLAIN
,term_id
é a chave primária. Acho que em sistemas maiores pode ser mais rápido consultar apenas termos específicos da taxonomia usando uma junção (lenta) do que consultar todos, classificando-os e filtrando o que você precisa.fonte