我应该如何在模板中加载不同的子菜单(子菜单取决于页面)?

时间:2011-07-22 21:07:13

标签: wordpress

所以这是基本的模板页面代码:

<?php

/*
 *  Template name: About Content Template
 */
?>
<?php get_header(); the_post(); ?>

<div id="container">
        <div id="main-content" class="dropShadow roundEdge">
            <?php wp_nav_menu( array('menu' => 'About Submenu', 'menu_id'  => 'submenu',  'container' => 'false' )); ?>
             <?php the_content(); ?>
        </div>
        <?php get_sidebar();?>
</div>
<?php get_footer();?>

为简单起见,我们假设唯一改变的是菜单名称,具体取决于页面组。页面组例如是AboutProducts。首先想到的是向属于某个组的每个页面添加自定义字段,并设置属性"category=About""category=Products"。在functions.php中,我将有一个映射到菜单名称的类别名称数组,例如"About = About Menu",所以在加载菜单之前,我会获得自定义属性,从数组中读取菜单名称值并将其设置为wp_nav_menu函数的参数。有更优雅的方式吗?

2 个答案:

答案 0 :(得分:0)

您可以使用is_category功能确定要应用的子菜单,而不是自定义字段。如果您的子菜单名称与类别同步,则可以自动方式工作。

答案 1 :(得分:0)

我发现的解决方案相对简单。子菜单中的第一页(例如,按下“关于”时的历史记录)可以被视为类别主页面,因此我获取了子菜单中链接的所有其他页面,并将第一页(历史记录)作为其父页面。然后我通过仪表板创建了一个子菜单,并将其命名为History子菜单。使这项工作的代码很简单:

<?php $submenuName = get_the_title($post->post_parent);
        $submenuName = $submenuName . " Submenu";
        wp_nav_menu( array('menu' => $submenuName, 'menu_id'  => 'submenu',  'container' => 'false' ));

get_the_title获取父页面名称,如果没有父页面,则获取页面名称。虽然与使用自定义字段没什么不同,但我认为这是更优雅的罪