¿Cuál es la diferencia entre term_id y term_taxonomy_id

18

El título lo dice todo. En este momento, en mis taxonomías personalizadas, obtengo los términos utilizando el término id y el nombre de taxonomía.

¡Pensé que esta pregunta se habría hecho antes pero no la puedo encontrar en ninguna parte! Así que solo pensé en preguntar y ver si alguien tiene alguna respuesta.

    
pregunta Daithí 02.01.2012 - 16:15

4 respuestas

18

Si echa un vistazo a la documentación de Wordpress, encontrará Taxonomías de Wordpress

  • term_id es el ID de un término en la tabla de términos
  • term_taxonomy_id es una ID única para el término + par de taxonomía.
respondido por el Juan Ramón 02.01.2012 - 16:35
9

El Códice dice:

  • term_id es el ID de un término en la tabla de términos
  • term_taxonomy_id es un ID único para el término + par de taxonomía

¿Qué significa esto?

Un término es una palabra. Puede pertenecer a una taxonomía, como etiquetas, categorías o una taxonomía personalizada. El problema es que puede haber varias taxonomías que contengan el mismo término.

Digamos que tienes un término llamado "engorde". Esta palabra tiene un número de identificación. Este es el term_id. No depende de cómo se use esta palabra, es decir, en qué taxonomías aparece el término.

Ahora la palabra "engorde" como etiqueta de publicación también tiene un número. Este es el term_taxonomy_id. Corresponde a "la etiqueta de la publicación" engorde "".

Tal vez usted también tiene una categoría llamada "engorde". Mientras que term_id es el mismo, el term_taxonomy_id para "la categoría" engorda "es diferente.

    
respondido por el Ken.shinde 24.06.2016 - 05:51
5

Como esto es parte de una mayor comprensión del diseño, lo describiré como un todo ... :)

En WP 4.5.3 todavía hay todas estas tablas (hablaré de ellas sin prefijo):

  • publicaciones
  • term_relationships
  • term_taxonomy
  • términos

La ruta para obtener los nombres legibles de los términos de publicación pasa por todos ellos.

publicaciones
el identificador principal aquí es ID - un id de una publicación (de cualquier tipo)

term_relationships
almacena pares de:
object_id - puede ser posts.ID (pero no tiene que ser)
term_taxonomy_id : esta es la NO identificación de un término (categoría) pero una identificación de RELATIONSHIP entre un término (categoría) y taxonomía ("tipo de categoría")

term_taxonomy El identificador principal aquí es term_taxonomy_id descrito anteriormente ^^
otras columnas importantes:
term_id - un ID de un término (categoría)
taxonomy : almacena la taxonomía del término ("tipo de categoría")

Este podría parecer gracioso, pero la intención inicial era agregar la capacidad para que los términos tengan más taxonomías (lo que en algunos casos puede tener sentido).

términos El identificador principal de aquí es el term_id : el ID de una categoría Otras columnas importantes aquí son:
name - nombre legible de la categoría, p. ej. "Generos musicales"
slug : el slug de un término utilizable, por ejemplo, en URL

Entonces el brutal que demuestra SQL para
obtener todas las publicaciones publicadas y todas sus categorías con los nombres de las categorías
podría tener este aspecto (agregue prefijos a las tablas cuando realice pruebas en su propio 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
    
respondido por el jave.web 23.06.2016 - 21:53
2
  

Un término no es una categoría o etiqueta en sí mismo. Debe darse contexto a través de la tabla term_taxonomy.

     

La tabla term_taxonomy coloca un término dentro de una taxonomía. Esto es lo que   hace que un término sea una categoría , una etiqueta o parte de una taxonomía personalizada (o en una   combinación de taxonomías).

     

term_id es el ID de un término en la tabla de términos.

     

term_taxonomy_id es una ID única para el término + par de taxonomía.

El term_id es siempre único al igual que el term_taxonomy_id . Ambos tienen un Auto Increment en la estructura de la tabla.

La tabla wp_term_taxonomy se asegura, por ejemplo, de que se crea una categoría, por lo que wordpress puede interferir con ella, por ejemplo, Woocommerce utiliza: product_tag , product_type , product_cat , todos ellos se denominan taxonomías personalizadas. Esta tabla también se une a la estructura padre / hijos. Con su columna parent .

  

La tabla final, term_relationships, relaciona objetos tales como publicaciones o enlaces a un term_taxonomy_id de la tabla term_taxonomy.

Si volvemos a elegir Woocommerce como ejemplo, esta tabla vincula el tipo de publicación products a su taxonomía product_cat , que contiene un nombre, por ejemplo, Computadoras, que por supuesto se recupera de la tabla wp_terms . Esta tabla contiene el term_id , name , slug y term_group . (term_group que personalmente nunca he usado)

Esperamos que lo anterior aclare un poco las diferencias y la forma en que Wordpress usa estas tablas.

    
respondido por el Rens Tillmann 17.11.2015 - 14:55

Lea otras preguntas en las etiquetas