ป้ายกำกับ: Category

WordPress: หมวดหมู่, ป้ายกำกับWordPress: หมวดหมู่, ป้ายกำกับ

ความสัมพันธ์ของระบบ Tag และ Category () ใน WordPress จะถูกแยกออกเป็นหลายตารางเพื่อความยืดหยุ่นในการขยายข้อมูลครับ โดยมี 3 ตารางหลักที่เป็นหัวใจสำคัญ ดังนี้


wp_terms

ตารางนี้เปรียบเสมือน “พจนานุกรม” ที่เก็บแค่ชื่อเรียกและ URL เท่านั้น มันจะไม่รู้เลยว่าตัวเองเป็น Tag, Category หรืออย่างอื่น

  • Key Column: term_id
  • Data: เก็บชื่อ เช่น ‘Security’, ‘SQL’, ‘ฉีด’

wp_term_taxonomy

ตารางนี้จะนำ term_id มาบอกว่า “มันคืออะไร” และเก็บสถิติว่ามีกี่โพสต์ที่ใช้คำนี้

  • Key Column: term_taxonomy_id , term_id
  • Data: บอกว่า term_id หมายเลข 10 คือ post_tag และมีคนใช้แล้ว 5 ครั้ง

wp_posts

ตารางที่เก็บเนื้อหาบทความ หน้าเพจ หรือสินค้าของคุณ

  • Key Column: ID
  • Data: ชื่อเรื่องบทความ, เนื้อหา, วันที่เขียน

ตารางที่เชื่อมทุกอย่างเข้าด้วยกัน: wp_term_relationships

เนื่องจาก 1 โพสต์ มีได้หลาย Tag และ 1 Tag ก็ใช้กับหลายโพสต์ WordPress จึงต้องมีตารางกลางมาจับคู่ครับ

ตารางความสัมพันธ์เชื่อมด้วยคอลัมน์
terms ↔ term_taxonomyOne-to-One / One-to-Manyterm_id
term_taxonomy ↔ term_relationshipsOne-to-Manyterm_taxonomy_id
posts ↔ term_relationshipsOne-to-Manyobject_id

สรุปไหลการทำงาน

ถ้าคุณต้องการหาว่า “โพสต์ ID 50 มี Tag อะไรบ้าง?” ระบบจะทำงานตามลำดับนี้

  1. ไปที่ wp_term_relationships หาแถวที่มี object_id = 50
  2. ดูว่าแถวนั้นมี term_taxonomy_id เลขอะไรบ้าง
  3. เอาเลขนั้นไปเช็คใน wp_term_taxonomy เพื่อยืนยันว่าเป็น post_tag
  4. สุดท้ายเอา term_id ไปดึงชื่อ ‘ชื่อแท็ก’ จาก wp_terms มาแสดงผล

เทคนิคการ Query

เวลาคุณเขียน SQL เพื่อเพิ่ม Tag คุณจึงต้อง INSERT ลงทั้ง terms และ term_taxonomy คู่กันเสมอ เพื่อให้ระบบความสัมพันธ์นี้ทำงานได้สมบูรณ์ครับ


อ่านเพิ่มเติม