数据库中的Wordpress默认菜单


18

现在我的wordpress(3.5)中有3个菜单。

  • 主菜单(wp中的默认设置)
  • 页脚菜单(wp中的默认值)
  • 测试菜单

现在,我将测试菜单保留为默认菜单。

Wordpress会将其存储在哪里?

我想知道WordPress在哪里存储有关前端显示的当前菜单的信息。

Answers:


46

菜单本身是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_twentyelevenoption_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元框中选择所需的菜单:

在此处输入图片说明


感谢您的答复,但我想知道它现在在哪里存储了默认菜单(显示在前端)。
Hiren Rathod

@HirenRathod我已经更新了答案
Eugene Manuilov 2013年

是的,我得到了答案。我正在使用hypershot主题,并将基本菜单保留为测试菜单。它像这样存储a:2:{i:0; b:0; s:18:“ nav_menu_locations”; a:2:{s:11:“ header-menu”; i:27; s:11:“ footer -menu“; i:0;}}这里i:27表示27是wp_terms中的term_id。感谢@ eugene-manuilov :)
Hiren Rathod

您如何选择给定菜单项(页面/帖子/链接)term_id
Xeoncross
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.