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


主菜单(wp的默认值)
脚步菜单(wp的默认值)
测试菜单
/>
现在我将测试菜单保留为默认菜单。

Wordpress将此东西存储在哪里?显示在前端。

#1 楼

菜单本身是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表中。要查找特定菜单的所有项目,可以使用以下查询:wp_options表中当前选择菜单的信息以序列化PHP数组的形式位于wp_options表中。例如,如果我们使用TwentyEleven主题,那么在option_name表中将有一条记录,其中theme_mod_twentyeleven列等于option_value,而...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}列等于term_id。在这里您可以看到"primary"等于103的菜单当前被选为theme_mods_{your-theme-name}菜单。

这里的关键原理是我们始终为每个WP主题单独记录选项。这些选项具有相同的名称结构:Appearance

PS:要更改管理面板中的当前菜单,只需转到Menus»Theme Locations页面,然后在q4312079q元框中选择所需的菜单:



评论


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

– Hiren Rathod
2013年1月5日12:04



@HirenRathod我已经更新了我的答案

– Eugene Manuilov
2013年1月5日,12:23

是的,我得到了答案。我正在使用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
2013年1月6日19:13

您如何选择给定term_id的菜单项(页面/帖子/链接)?

– Xeoncross
2015年9月19日,下午1:26