Menu mặc định của Wordpress trong cơ sở dữ liệu


18

Có 3 menu trong wordpress của tôi (3.5).

  • Menu chính (mặc định từ wp)
  • Menu chân trang (mặc định từ wp)
  • Thực đơn kiểm tra

Bây giờ tôi đã giữ menu kiểm tra như mặc định.

Wordpress lưu trữ thứ này ở đâu?

Tôi muốn biết nơi lưu trữ wordpress về menu hiện tại đang hiển thị ở mặt trước.

Câu trả lời:


46

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_termsbả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_postsbả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_relationshipsbả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_optionsbả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_optionsbảng với option_namecột bằng theme_mod_twentyelevenoption_valuecột bằng ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Ở đây bạn có thể thấy menu đó term_idbằ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» Menustrang và chọn menu bạn cần trong Theme Locationshộp meta:

nhập mô tả hình ảnh ở đây


Cảm ơn bạn đã trả lời nhưng tôi muốn biết nơi nó lưu menu mặc định (hiển thị ở giao diện người dùng) bây giờ.
Hiren Rathod

@HirenRathod Tôi đã cập nhật câu trả lời của mình
Eugene Manuilov

Vâng, tôi đã có câu trả lời. Tôi đang sử dụng chủ đề hypershot và giữ menu mồi là menu thử nghiệm. Nó lưu trữ như thế này a: 2: {i: 0; b: 0; s: 18: "nav_menu_locations"; a: 2: {s: 11: "menu-head" -menu "; i: 0;}} Ở đây i: 27 có nghĩa là 27 là term_id từ wp_terms. Cảm ơn @ eugene-manuilov :)
Hiren Rathod

Làm thế nào bạn sẽ chọn các mục menu (trang / bài viết / liên kết) cho một term_id?
Xeoncross
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.