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