Domyślne menu Wordpress w bazie danych


18

W moim wordpressie (3.5) są teraz 3 menu.

  • Menu główne (domyślnie z wp)
  • Menu stopki (domyślnie od wp)
  • Menu testowe

Teraz domyślnie zachowałem menu testowe.

Gdzie Wordpress przechowuje tę rzecz?

Chcę wiedzieć, gdzie Wordpress przechowuje informacje o bieżącym menu wyświetlanym w interfejsie.

Odpowiedzi:


46

Menu samo w sobie jest taksonomią WP. Oznacza to, że możesz znaleźć wszystkie menu w wp_termstabeli, uruchamiając następujące zapytanie:

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';

Element menu to niestandardowy typ postu w WP. Są przechowywane w wp_poststabeli. Możesz je wszystkie znaleźć, używając tego zapytania:

SELECT * 
  FROM wp_posts 
 WHERE post_type = 'nav_menu_item';

Relacje między menu i elementami menu są przechowywane w wp_term_relationshipstabeli. Aby znaleźć wszystkie elementy określonego menu, możesz użyć tego zapytania:

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*/;

Informacje o aktualnie wybranym menu znajdują się w wp_optionstabeli jako szeregowa tablica PHP. Na przykład, jeśli użyjemy motywu TwentyEleven, będziemy mieć rekord w wp_optionstabeli z option_namekolumną równą theme_mod_twentyeleveni option_valuekolumną równą ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Tutaj możesz zobaczyć, że menu o wartości term_idrównej 103 jest obecnie wybrane jako "primary"menu.

Kluczową zasadą jest to, że zawsze mamy osobny rekord opcji dla każdego motywu WP. Takie opcje mają taką samą strukturę nazwa: theme_mods_{your-theme-name}.

PS: Aby zmienić bieżące menu w panelu administracyjnym, przejdź do strony Appearance» Menusi wybierz potrzebne menu w Theme Locationspolu meta:

wprowadź opis zdjęcia tutaj


Dziękuję za odpowiedź, ale chcę wiedzieć, gdzie teraz jest przechowywane menu, które jest domyślnie (wyświetlane w interfejsie użytkownika).
Hiren Rathod

@HirenRathod Zaktualizowałem swoją odpowiedź
Eugene Manuilov

Tak, mam odpowiedź. Używam motywu hipershota i zachowałem menu podstawowe jako menu testowe. Przechowuje w ten sposób a: 2: {i: 0; b: 0; s: 18: „nav_menu_locations”; a: 2: {s: 11: „menu nagłówka”; i: 27; s: 11: „stopka -menu "; i: 0;}} Tutaj i: 27 oznacza, że ​​27 to term_id z wp_terms. Dzięki @ eugene-manuilov :)
Hiren Rathod

Jak wybrałbyś elementy menu (strony / posty / linki) dla danego term_id?
Xeoncross
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.