Site icon PlusMagi's Blog By Pitt Phunsanit

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

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


wp_terms ( คลังชื่อ )

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


wp_term_taxonomy ( ตัวกำหนดประเภท )

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


wp_posts ( เนื้อหาหลัก )

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


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

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

ตารางความสัมพันธ์เชื่อมด้วยคอลัมน์
termsterm_taxonomyOne-to-One / One-to-Manyterm_id
term_taxonomyterm_relationshipsOne-to-Manyterm_taxonomy_id
poststerm_relationshipsOne-to-Manyobject_id ( คือ Post ID )

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

ถ้าคุณต้องการหาว่า “โพสต์ 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 ( สร้างประเภท ) คู่กันเสมอ เพื่อให้ระบบความสัมพันธ์นี้ทำงานได้สมบูรณ์ครับ


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

Exit mobile version