Answers:
菜单本身是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
?