เมนูเริ่มต้น Wordpress ในฐานข้อมูล


18

ตอนนี้มี 3 เมนูใน wordpress ของฉัน (3.5)

  • เมนูหลัก (ค่าเริ่มต้นจาก wp)
  • เมนูส่วนท้าย (ค่าเริ่มต้นจาก wp)
  • เมนูทดสอบ

ตอนนี้ฉันคงเมนูทดสอบไว้เป็นค่าเริ่มต้น

Wordpress เก็บสิ่งนี้ไว้ที่ไหน?

ฉันต้องการทราบว่า wordpress จัดเก็บเกี่ยวกับเมนูปัจจุบันที่แสดงอยู่ด้านหน้าสุด

คำตอบ:


46

เมนูด้วยตัวเองเป็นอนุกรมวิธานใน WP หมายความว่าคุณสามารถค้นหาเมนูทั้งหมดในwp_termsตารางโดยเรียกใช้แบบสอบถามต่อไปนี้:

SELECT * 
  FROM wp_terms AS t
  LEFT JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id
 WHERE tt.taxonomy = 'nav_menu';

รายการเมนูเป็นประเภทโพสต์ที่กำหนดเองใน WP พวกเขาจะถูกเก็บไว้ในwp_postsตาราง คุณสามารถค้นหาทั้งหมดโดยใช้แบบสอบถามนี้:

SELECT * 
  FROM wp_posts 
 WHERE post_type = 'nav_menu_item';

ความสัมพันธ์ระหว่างเมนูและรายการเมนูจะถูกเก็บไว้ในwp_term_relationshipsตาราง เพื่อค้นหารายการทั้งหมดของเมนูเฉพาะคุณสามารถใช้แบบสอบถามนี้:

SELECT p.* 
  FROM wp_posts AS p 
  LEFT JOIN wp_term_relationships AS tr ON tr.object_id = p.ID
  LEFT JOIN wp_term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
 WHERE p.post_type = 'nav_menu_item'
   AND tt.term_id = /*your menu ID*/;

ข้อมูลเกี่ยวกับเมนูที่เลือกในปัจจุบันอยู่ในwp_optionsตารางเป็นอาร์เรย์ PHP ต่อเนื่อง ตัวอย่างเช่นถ้าเราใช้ธีม TwentyEleven แล้วเราจะมีการบันทึกในwp_optionsตารางที่มีoption_nameคอลัมน์เท่ากับtheme_mod_twentyelevenและคอลัมน์เท่ากับoption_value ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}ที่นี่คุณจะเห็นเมนูที่มีterm_idค่าเท่ากับ 103 ถูกเลือกเป็น"primary"เมนูในปัจจุบัน

หลักการสำคัญที่นี่คือเรามีบันทึกตัวเลือกแยกต่างหากสำหรับแต่ละธีม WP theme_mods_{your-theme-name}ตัวเลือกดังกล่าวมีโครงสร้างชื่อเดียวกัน

PS: หากต้องการเปลี่ยนเมนูปัจจุบันในแผงผู้ดูแลระบบเพียงไปที่หน้าAppearance» Menusและเลือกเมนูที่คุณต้องการในTheme Locationsกล่องเมตา:

ป้อนคำอธิบายรูปภาพที่นี่


ขอบคุณสำหรับการตอบกลับของคุณ แต่ฉันต้องการทราบว่ามันเก็บเมนูซึ่งเป็นค่าเริ่มต้น (แสดงที่ส่วนหน้า) ตอนนี้
Hiren Rathod

@HirenRathod ฉันได้อัปเดตคำตอบของฉันแล้ว
Eugene Manuilov

ใช่ฉันได้รับคำตอบ ฉันใช้ชุดรูปแบบ hypershot และเก็บเมนูดั้งเดิมเป็นเมนูทดสอบ มันเก็บแบบนี้: 2: {i: 0; b: 0; s: 18: "nav_menu_locations"; a: 2: {s: 11: "header-menu"; i: 27; s: 11: "footer -menu "; i: 0;}} ที่นี่ i: 27 หมายถึง 27 คือ term_id จาก wp_terms ขอบคุณ @ ยู-manuilov :)
Hiren Rathod

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