Menu tự nó là một phân loại trong WP. Điều đó có nghĩa là bạn có thể tìm thấy tất cả các menu trong wp_terms
bảng, bằng cách chạy truy vấn sau:
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';
Mục menu là loại bài tùy chỉnh trong WP. Chúng được lưu trữ trong wp_posts
bảng. Bạn có thể tìm thấy tất cả chúng bằng cách sử dụng truy vấn này:
SELECT *
FROM wp_posts
WHERE post_type = 'nav_menu_item';
Mối quan hệ giữa các menu và các mục menu được lưu trữ trong wp_term_relationships
bảng. Để tìm tất cả các mục của menu cụ thể, bạn có thể sử dụng truy vấn này:
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*/;
Thông tin về menu hiện đang chọn được đặt trong wp_options
bảng dưới dạng mảng PHP được tuần tự hóa. Ví dụ: nếu chúng ta sử dụng chủ đề TwentyEleven, thì chúng ta sẽ có một bản ghi trong wp_options
bảng với option_name
cột bằng theme_mod_twentyeleven
và option_value
cột bằng ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}
. Ở đây bạn có thể thấy menu đó term_id
bằng 103 hiện đang được chọn làm "primary"
menu.
Nguyên tắc chính ở đây là chúng tôi luôn có bản ghi tùy chọn riêng cho từng chủ đề WP. Các tùy chọn như vậy có cùng cấu trúc tên : theme_mods_{your-theme-name}
.
PS: Để thay đổi menu hiện tại trong bảng quản trị, chỉ cần truy cập Appearance
» Menus
trang và chọn menu bạn cần trong Theme Locations
hộp meta: