我可以为每个父页面提供不同的菜单吗?

时间:2014-02-05 作者:Josh

我的网站上有4种不同的菜单。

现在我正在使用我发布的一个问题的解决方案here 为了让菜单使用我正在使用的CSS框架显示。

每个菜单都有许多子页面,我想在这些子页面上显示相应的菜单。例如,“关于我们”子菜单仅显示“关于我们”菜单,“联系人”子菜单仅显示“联系我们”菜单。

我的职能。显示菜单的php是:

<?php
 function register_my_menus() {
 register_nav_menus(
 array(
   \'about-menu\' => __( \'About Us Menu\' ),
   \'how-menu\' => __( \'How Do I Menu\' ),
   \'services-menu\' => __( \'Our Services Menu\' ),
   \'online-menu\' => __( \'Do It Online Menu\' )
   )
 );
}
add_action( \'init\', \'register_my_menus\' );
?>
在我的脑海中,我想象它是标题中的一个脚本。只有一系列if语句的php。

我感谢你的帮助。

编辑:我实际上通过使用一系列if语句和页面中的php include解决了这个问题。

对于任何感兴趣的人,我使用solution 在上面发布,代码如下:

<?php 
  if ( $post->post_parent == \'1\' || is_page(1) ) { 
    $menu_name = \'about-menu\'; 
    // and so on..
  } 
  elseif ( $post->post_parent == \'2\' || is_page(2) ) {
    $menu_name = \'contact-menu\';
    // and so on..
  }
?>
当然,这可能不是最好的方法,因为有大量重复的代码,但它对我来说很有用,我希望它能在将来对其他人有益。

2 个回复
SO网友:tfrommen

在每个(子)页面上,获取最上面的父级,然后显示相应的菜单。

这是我刚才描述的蓝图(你可能需要改变这个和那个,让它表现得像你想要的那样)。只需将以下代码放在当前已设置菜单的位置(在header.php 我想是文件):

if (is_page()) {
    $id = get_the_ID();
    if (count($ancestors = get_ancestors($id, \'page\')))
        $id = $ancestors[count($ancestors)-1];
    wp_nav_menu(get_post($id)->post_name.\'-menu\');
} else
    wp_nav_menu(\'default-menu\');

SO网友:NW Tech

当然可以。我用几种不同的方法做过类似的事情。

一种方法是为每个页面创建一个页面模板,并在模板中调用导航。如果您在儿童主题中使用Genesis框架,它非常简单。

另一种方法是注册一个新的小部件区域,并在此处显示菜单/每个菜单将是该小部件区域中的一个新项目,您可以使用如下内容Widget Logic 将其显示在特定页面上。

结束

相关推荐

How to add taxonomy in menus?

书籍(自定义帖子类型)小说(税)科学(税)历史(税)--书籍体裁(税务)小说(术语)科学(学期)历史(学期)以下哪一项是做这件事的“好方法”?对于前一个(这是我目前在管理菜单中的功能,我为每个功能都提供了“register\\u taxonomy”功能),我无法选择要在菜单中显示的“Tax”。而对于后者,我可以将它们添加到菜单中,只需要一个“register\\u taxonomy”函数。