ความแตกต่างระหว่าง term_id และ term_taxonomy_id คืออะไร


20

ชื่อกล่าวมันทั้งหมด ในขณะนี้ใน taxonomies ที่กำหนดเองของฉันฉันได้รับเงื่อนไขโดยใช้ id คำและชื่อ taxonomy

คิดว่าคำถามนี้จะถูกถามมาก่อน แต่หาที่ไหนไม่ได้! ดังนั้นแค่คิดว่าฉันถามและดูว่าใครมีคำตอบใด ๆ

คำตอบ:


21

หากคุณพิจารณาเอกสาร Wordpress คุณจะพบWordpress Taxonomies

  • term_idคือ ID ของคำศัพท์ในตารางข้อกำหนด
  • term_taxonomy_idเป็น ID เฉพาะสำหรับคู่ + คำว่า taxonomy

ดังนั้นการจัดการและการคว้าคำขึ้นอยู่กับ term_id จะไม่ทำให้ซ้ำกันแล้ว?
Daithí

1
ที่จริงเพียงแค่ตอบคำถามสุดท้ายว่า ดูที่ตาราง wp_terms และ yep โดยใช้ term_id เท่านั้นมีความปลอดภัย ขอบคุณสำหรับการตอบกลับของคุณ @Juan
Daithí

2
เพียงแค่ทราบว่าใน WordPress 4.2 ทุกคำศัพท์ถูกแยกออกซึ่งหมายความว่าแต่ละคำterm_idจะเกิดขึ้นเพียงครั้งเดียวในterm_taxonomyตาราง (ก่อนที่คอลัมน์จะไม่ซ้ำกันและอาจมีการแชร์คำศัพท์ข้าม taxonomies) นี้อาจจะยังคงที่จะพัฒนาขึ้นในอนาคตตามแผนงานอนุกรมวิธาน ส่วนหนึ่งของการที่จะรวมระยะและระยะตารางอนุกรมวิธาน
JD

11

Codex พูดว่า:

  • term_id คือ ID ของคำศัพท์ในตารางข้อกำหนด
  • term_taxonomy_id เป็น ID เฉพาะสำหรับคู่ + คำว่า taxonomy

สิ่งนี้หมายความว่า?

คำหนึ่งคำ มันสามารถเป็นของอนุกรมวิธานเช่นแท็กหมวดหมู่หรืออนุกรมวิธานที่กำหนดเอง สิ่งคือ: อาจมีหลาย taxonomies ที่มีคำเดียวกัน

สมมติว่าคุณมีคำที่เรียกว่า "ขุน" คำนี้มีหมายเลขประจำตัว นี่คือ term_id มันไม่ได้ขึ้นอยู่กับวิธีการใช้คำนี้เช่นในที่ taxonomies คำที่ปรากฏ

ตอนนี้คำว่า "ขุน" เป็นแท็กโพสต์ก็มีจำนวน นี่คือ term_taxonomy_id มันสอดคล้องกับ "แท็กโพสต์ 'ขุน' '

บางทีคุณอาจมีหมวดหมู่ที่เรียกว่า "ขุน" ในขณะที่ term_id เหมือนกัน term_taxonomy_id สำหรับ“ หมวดหมู่ 'fattening'” นั้นแตกต่างกัน


5

เนื่องจากนี่เป็นส่วนหนึ่งของความเข้าใจที่มากขึ้นของการออกแบบฉันจะอธิบายโดยรวม ... :)

ใน WP 4.5.3 ยังคงมีตารางเหล่านี้ทั้งหมด (ฉันจะพูดถึงพวกเขาโดยไม่มีคำนำหน้า):

  • โพสต์
  • term_relationships
  • term_taxonomy
  • เงื่อนไข

เส้นทางที่จะได้รับชื่อโพสต์ข้อความที่อ่านได้ของพวกเขาทั้งหมด

โพสต์
ตัวระบุหลักที่นี่คือID- id ของโพสต์ (ทุกประเภท)

term_relationships
ร้านค้าคู่:
object_id- สามารถเป็นposts.ID( แต่ไม่ได้จะต้องมี)
term_taxonomy_id- นี่คือไม่ได้รหัสของคำ (หมวดหมู่) แต่ประชาชนของความสัมพันธ์ระหว่างคำ (หมวดหมู่) และอนุกรมวิธาน ( "หมวดหมู่ประเภท")

term_taxonomy
ตัวระบุหลักที่นี่ถูกterm_taxonomy_iddesribed ด้านบน ^^
คอลัมน์สำคัญอื่น ๆ :
term_id- รหัสของคำศัพท์ (หมวดหมู่)
taxonomy- เก็บคำว่า taxonomy ("ประเภทหมวดหมู่")

อันนี้อาจดูตลก แต่ความตั้งใจเริ่มแรกคือการเพิ่มความสามารถในการใช้คำศัพท์เพื่อให้มี taxonomies มากขึ้น (ซึ่งในบางกรณีอาจทำให้เข้าใจได้)

เงื่อนไข
ตัวระบุหลักที่นี่คือterm_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 วางคำภายใน taxonomy นี่คือสิ่งที่ทำให้คำประเภทการเป็นแท็กหรือส่วนหนึ่งของอนุกรมวิธานที่กำหนดเอง (หรือในการรวมกันของ taxonomies ก)

term_id คือ ID ของคำศัพท์ในตารางข้อกำหนด

term_taxonomy_id เป็นรหัสที่ไม่ซ้ำกันสำหรับคู่ + คำว่า taxonomy

อยู่เสมอที่ไม่ซ้ำกันเช่นเดียวกับterm_id term_taxonomy_idทั้งสองมีAuto Incrementในโครงสร้างตาราง

ตารางwp_term_taxonomyทำให้แน่ใจเช่นว่าหมวดหมู่นี้ถูกสร้างขึ้นเพื่อให้ WordPress สามารถยุ่งเกี่ยวกับมันเช่นการใช้ WooCommerce: product_tag, product_type, product_cat, ทั้งหมดของพวกเขาที่เรียกว่า taxonomies ที่กำหนดเอง ตารางนี้ยังผูกโครงสร้างพาเรนต์ / ลูก parentคอลัมน์มัน

ตารางสุดท้าย term_relationships เกี่ยวข้องกับวัตถุเช่นโพสต์หรือลิงก์ไปยัง term_taxonomy_id จากตาราง term_taxonomy

ถ้าเราเลือก WooCommerce อีกครั้งเป็นตัวอย่างตารางนี้เชื่อมโยงประเภทโพสต์productsเพื่ออนุกรมวิธานของพวกเขาproduct_catซึ่งมี namy wp_termsเช่นคอมพิวเตอร์ซึ่งเป็นหลักสูตรที่ดึงมาจากตาราง ตารางนี้มีterm_id, name, และslug term_group(term_group ฉันส่วนตัวไม่เคยใช้)

หวังว่าข้างต้นทำให้สิ่งต่าง ๆ ชัดเจนยิ่งขึ้นเกี่ยวกับความแตกต่างและวิธีที่ Wordpress ใช้ตารางเหล่านี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.