将WordPress自定义菜单的活动父级别的子菜单作为单独菜单列出

时间:2011-04-19 作者:petermolnar

我有一个结构化的自定义菜单:

父母1子女1子女2父母4子女1子女等。

我想要以下内容:在每个页面上,父级项目将显示为主菜单。

如果父级菜单项处于活动状态,我希望在页面的其他位置将子菜单项显示为单独的列表。

有没有一种“简单”的方法来实现这一点,或者我必须每次都列出菜单,然后用PHP选择当前的菜单,并且为此头疼了好几天

谢谢cadeyrn

3 个回复
最合适的回答,由SO网友:Richard Venâncio 整理而成

This plugin 做你想做的!

SO网友:Chip Bennett

这应该很容易执行,使用两个调用wp_list_pages(), 和适当的变量。

对于主(即顶级)导航菜单,只需使用depth 参数,例如:

wp_list_pages( array(
     // display only top-level hierarchy
     \'depth\' => 1
) );
这将输出所有顶层页面的菜单。

对于辅助(即子页面)导航菜单,只需获取当前页面的ID,并将其作为child_of 论点这需要将变量设置为$post->ID 从回路内部,使其在回路外部可用。

e、 g.回路内部:

$parent_page = get_the_ID();
然后在循环外部,对于子页面导航菜单:

wp_list_pages( array(
     // display all hierarchical levels
     \'depth\' => 0,
     // only children of the current Page
     \'child_of\' => $parent_page
) );
唯一需要注意的是,此子页面菜单必须位于循环之后,否则您将需要初始通过循环,找到$post->ID, 然后rewind_posts() 在循环之前。

SO网友:Marz

你不能在你的风格中添加一些CSS代码吗。css类似display: inline-block; (而不是display: none;) 到ul.sub-menu 对于li.current_page_item?

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph