term_id와 term_taxonomy_id의 차이점은 무엇입니까


20

제목이 다 나와 있습니다. 현재 내 맞춤 분류법에서 용어 id와 분류법 이름을 사용하여 용어를 얻습니다.

이 질문은 이전에 요청되었지만 어디서도 찾을 수 없다고 생각했습니다! 그래서 내가 물어보고 누군가 대답이 있는지 보려고 생각했습니다.

답변:


21

Wordpress 문서를 살펴보면 Wordpress Taxonomies 를 찾을 수 있습니다.

  • term_id 는 용어 테이블에있는 용어의 ID입니다.
  • term_taxonomy_id 는 용어 + 분류 체계 쌍의 고유 ID입니다.

그래서 term_id만을 기반으로 용어를 조작하고 잡으면 중복이 발생하지 않습니까?
Daithí

1
실제로 그 마지막 질문에 답했습니다. wp_terms 테이블을 보면 term_id 만 사용하는 것이 안전합니다. 답장을 보내 주셔서 감사합니다 @Juan
Daithí

2
WordPress 4.2에서는 모든 용어가 분리되었습니다 . 즉, 각 용어는term_id에서 한 번만 나타납니다 term_taxonomy(열이 고유하지 않고 분류 체계에서 용어를 공유하기 전에). 이는 분류법 로드맵을 기반으로 앞으로도 계속 발전 할 수 있습니다 . 그것의 한 부분은 용어와 용어 분류 표결합하는 것 입니다.
JD

11

코덱스는 말한다 :

  • term_id는 용어 테이블에있는 용어의 ID입니다.
  • term_taxonomy_id는 term + taxonomy 쌍의 고유 ID입니다.

이것은 무엇을 의미 하는가?

용어는 단어입니다. 태그, 카테고리 또는 사용자 정의 분류와 같은 분류에 속할 수 있습니다. 문제는 동일한 용어를 포함하는 여러 분류법이있을 수 있다는 것입니다.

"fattening"이라는 용어가 있다고 가정 해 봅시다. 이 단어에는 ID 번호가 있습니다. 이것은 term_id입니다. 이 단어가 어떻게 사용되는지, 즉 용어가 나타나는 분류법에 의존하지 않습니다.

이제 게시물 태그로 "fattening"이라는 단어에도 숫자가 있습니다. 이것은 term_taxonomy_id입니다. "포스트 태그 'fattening'"에 해당합니다.

아마도 "fattening"이라는 카테고리가있을 수도 있습니다. term_id는 동일하지만“범주 '범주에 대한 term_taxonomy_id는 다릅니다.


5

이것은 디자인에 대한 더 큰 이해의 일부이므로 전체적으로 설명 할 것입니다 ... :)

WP 4.5.3에는 여전히 모든 테이블이 있습니다 ( 접두사 없이 테이블에 대해 이야기 할 것입니다 ).

  • 게시물
  • term_relationships
  • term_taxonomy
  • 자귀

게시물 용어를 읽을 수있는 이름을 얻는 경로는 모두 통과합니다.


여기에 주요 식별자를 게시 합니다 ID- 게시물 의 ID (모든 유형)

term_relationships
의 저장 쌍을 :
object_id- posts.ID(그러나 않습니다 하지 있어야합니다)
term_taxonomy_id- 이것이 NOT 용어 (카테고리)의 ID를하지만 의 ID 관계 용어 (카테고리)와 분류 사이 ( "카테고리 유형")

term_taxonomy
여기에 주요 식별자가 term_taxonomy_id위에 설명되어 있습니다. ^^
또 다른 중요한 열 :
term_id- 용어의 ID (범주)
taxonomy-용어의 분류 ( "범주 유형")를 저장합니다.

이것은 재미있을 것 같지만 초기 의도는 용어가 더 많은 분류법을 가질 수있는 능력을 추가하는 것이 었습니다 ( 일부 경우에는 의미가 있음).

용어
여기에 주요 identificator은이다 term_id- 카테고리의 ID가
여기에 또 다른 중요한 열은 다음과 같습니다 :
name- 읽을 카테고리 이름 예 : "음악 장르"
slug- URL에서 사용할 수있는 예를 들어, 용어의 슬러그

따라서 게시 된 모든 게시물과 범주 이름을 가진 모든 범주가져 오는 잔인한 SQL 은 다음과 같이 보일 수 있습니다 (자신의 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

2

용어 자체는 범주 나 태그가 아닙니다. term_taxonomy 테이블을 통해 컨텍스트를 제공해야합니다.

term_taxonomy 테이블은 분류 체계 내에 용어를 배치합니다. 이것이 용어를 카테고리 , 태그 또는 사용자 정의 분류법의 일부로 만드는 것입니다 (또는 의 조합)로 만드는 것입니다.

term_id 용어 테이블에서 용어의 ID입니다.

term_taxonomy_id term + taxonomy 쌍의 고유 ID입니다.

term_id단지 등 항상 고유합니다 term_taxonomy_id. 둘 다 Auto Increment테이블 구조를 가지고 있습니다.

표는 wp_term_taxonomy워드 프레스가 예를 들어 Woocommerce의 사용을 방해 할 수 있으므로, 반드시 카테고리가 생성되는 것을 예를 들어 있습니다 : product_tag, product_type, product_cat, 그들 모두가 소위 사용자 정의 분류 체계이다. 이 테이블은 또한 부모 / 자식 구조를 바인딩합니다. 열 parent입니다.

마지막 테이블 인 term_relationships는 post_taxonomy_id의 post_taxonomy_id에 대한 게시물 또는 링크와 같은 오브젝트를 관련시킵니다.

예를 들어 Woocommerce를 다시 선택하면이 테이블은 게시물 유형 products을 분류 체계 product_cat에 연결합니다. 여기에는 물론 테이블에서 검색되는 컴퓨터와 같은 namy가 포함 wp_terms됩니다. 이 테이블은 포함 term_id, name, slugterm_group. (개인적으로 사용한 적이없는 term_group)

위의 내용이 차이점과 Wordpress가 이러한 테이블을 사용하는 방식에 대해 좀 더 명확하게하기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.