Меню само по себе является таксономией в 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_id103 в настоящее время выбрано как "primary"меню.
Ключевой принцип здесь заключается в том, что у нас всегда есть отдельные параметры записи для каждой темы WP. Такие варианты имеют одинаковую структуру имени: theme_mods_{your-theme-name}.
PS: Для изменения текущего меню в панели администратора, просто перейдите Appearance» Menusстраницу и выберите меню нужно в Theme Locationsмета - поле:
