Menu samo w sobie jest taksonomią WP. Oznacza to, że możesz znaleźć wszystkie menu w wp_terms
tabeli, 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_posts
tabeli. 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_relationships
tabeli. 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_options
tabeli jako szeregowa tablica PHP. Na przykład, jeśli użyjemy motywu TwentyEleven, będziemy mieć rekord w wp_options
tabeli z option_name
kolumną równą theme_mod_twentyeleven
i option_value
kolumną równą ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}
. Tutaj możesz zobaczyć, że menu o wartości term_id
ró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
» Menus
i wybierz potrzebne menu w Theme Locations
polu meta: