Sự khác biệt giữa term_id và term_taxonomy_id


20

Tiêu đề nói lên tất cả. Hiện tại trong các phân loại tùy chỉnh của tôi, tôi nhận được các thuật ngữ sử dụng thuật ngữ id và tên phân loại.

Nghĩ rằng câu hỏi này đã được hỏi trước đây nhưng không thể tìm thấy nó ở bất cứ đâu! Vì vậy, chỉ cần nghĩ rằng tôi hỏi và xem nếu có ai có câu trả lời.

Câu trả lời:


21

Nếu bạn xem tài liệu Wordpress, bạn sẽ tìm thấy Phân loại Wordpress

  • term_id là ID của một thuật ngữ trong bảng điều khoản
  • term_taxonomy_id là một ID duy nhất cho cặp thuật ngữ + phân loại.

Vì vậy, thao túng và lấy các thuật ngữ chỉ dựa trên thuật ngữ_id sẽ không gây ra sự trùng lặp sau đó?
Daithí

1
thực sự chỉ trả lời câu hỏi cuối cùng đó Có một cái nhìn vào bảng wp_terms và yep chỉ sử dụng term_id là an toàn. Cảm ơn câu trả lời của bạn @Juan
Daithí

2
Chỉ cần lưu ý rằng trong WordPress 4.2, tất cả các thuật ngữ đã được phân tách , có nghĩa là mỗi thuật ngữ term_idsẽ chỉ xảy ra một lần trong term_taxonomybảng (trước khi cột không phải là duy nhất và các thuật ngữ có thể được chia sẻ trên các nguyên tắc phân loại). Điều này có thể tiếp tục phát triển trong tương lai, dựa trên lộ trình phân loại . Một phần trong đó là kết hợp các bảng phân loại thuật ngữ và thuật ngữ .
JD

11

Codex nói:

  • term_id là ID của một thuật ngữ trong bảng điều khoản
  • term_taxonomy_id là một ID duy nhất cho cặp thuật ngữ + phân loại

Điều đó có nghĩa là gì?

Một thuật ngữ là một từ. Nó có thể thuộc về một nguyên tắc phân loại, chẳng hạn như thẻ, danh mục hoặc phân loại tùy chỉnh. Vấn đề là: có thể có một số nguyên tắc phân loại có cùng thuật ngữ.

Hãy nói rằng bạn có một thuật ngữ gọi là Fattening Viking. Từ này có số id. Đây là thuật ngữ_id. Nó không phụ thuộc vào cách từ này được sử dụng, tức là trong đó các thuật ngữ phân loại xuất hiện.

Bây giờ, từ tiếng Anh vỗ béo thành một thẻ bài cũng có một số. Đây là term_taxonomy_id. Nó tương ứng với các thẻ bài 'vỗ béo'.

Có lẽ bạn cũng có một thể loại gọi là Fattening '. Trong khi term_id là như nhau, thì term_taxonomy_id cho nhóm phạm trù 'vỗ béo' là khác nhau.


5

Vì đây là một phần của sự hiểu biết lớn hơn về thiết kế, tôi sẽ mô tả toàn bộ ... :)

Trong WP 4.5.3 vẫn còn tất cả các bảng này (tôi sẽ nói về chúng mà không có tiền tố):

  • bài viết
  • term_relationships
  • thuật ngữ kinh tế
  • điều kiện

Đường dẫn để có được các tên có thể đọc được của thuật ngữ bài đăng đi qua tất cả chúng.

đăng
định danh chính ở đây là ID- id của bài đăng (thuộc bất kỳ loại nào)

term_relationships
lưu trữ các cặp:
object_id- thể posts.ID(nhưng không phải )
term_taxonomy_id- đây không phải là id của một thuật ngữ (danh mục) mà là id của QUAN HỆ giữa một thuật ngữ (danh mục) và phân loại ("loại danh mục")

term_taxonomy
công cụ nhận dạng chính ở đây được term_taxonomy_idmô tả ở trên ^^
một cột quan trọng khác:
term_id- id của một thuật ngữ (danh mục)
taxonomy- lưu trữ thuật ngữ phân loại ("loại danh mục")

Điều này có vẻ buồn cười, nhưng dự định ban đầu là thêm khả năng cho các thuật ngữ để có nhiều phân loại hơn (trong một số trường hợp có thể có ý nghĩa).

thuật ngữ
định danh chính ở đây là term_id- id của một danh mục
các cột quan trọng khác ở đây là:
name- tên danh mục có thể đọc được, ví dụ: "Thể loại âm nhạc"
slug- sên của một thuật ngữ có thể sử dụng, ví dụ như trong URL

Vì vậy, SQL trình diễn tàn bạo để
có được tất cả các bài đăng được xuất bản và tất cả các danh mục có tên của danh mục
có thể trông như thế này (thêm tiền tố vào các bảng khi thử nghiệm trên WP DB của riêng bạn):

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

Một thuật ngữ không phải là một danh mục hoặc thẻ của riêng mình. Nó phải được đưa ra bối cảnh thông qua bảng term_taxonomy.

Bảng term_taxonomy đặt một thuật ngữ trong phân loại. Đây là những gì làm cho một thuật ngữ một danh mục , một thẻ hoặc một phần của phân loại tùy chỉnh (hoặc kết hợp các nguyên tắc phân loại).

term_id là ID của một thuật ngữ trong bảng điều khoản.

term_taxonomy_id là một ID duy nhất cho cặp thuật ngữ + phân loại.

Các term_idphải lúc nào cũng độc đáo giống như term_taxonomy_id. Cả hai đều có một Auto Incrementcấu trúc trong bảng.

Bảng wp_term_taxonomyđảm bảo ví dụ rằng một loại được tạo ra, vì vậy wordpress có thể cản trở nó ví dụ Woocommerce sử dụng: product_tag, product_type, product_cat, tất cả trong số họ là những cái gọi là nguyên tắc phân loại tùy chỉnh. Bảng này cũng liên kết cấu trúc cha / con. Với cột đó parent.

Bảng cuối cùng, term_relationships, liên quan đến các đối tượng như bài đăng hoặc liên kết đến một term_taxonomy_id từ bảng term_taxonomy.

Nếu chúng ta chọn Wooc Commerce một lần nữa làm ví dụ, bảng này sẽ liên kết loại bài đăng productsvới phân loại của chúng product_cat, trong đó có một tên, ví dụ: Máy tính dĩ nhiên được lấy từ bảng wp_terms. Bảng này chứa các term_id, name, slugterm_group. (term_group cá nhân tôi chưa bao giờ sử dụng)

Hy vọng những điều trên làm cho mọi thứ rõ ràng hơn một chút về sự khác biệt và cách Wordpress sử dụng các bảng này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.