0

我仍然在玩这个愚蠢的导航菜单。这个想法是,当您第一次进入该页面时,会列出顶级页面,当单击其中一个页面时,会在其下方显示第二级菜单,其中包含所有选定页面的子页面,并且当单击其中一个页面时,所有所选二级页面的三级页面显示在二级页面下方。

我试图以各种方式完成这项工作,我什至尝试创建一个会话存储来记住某些部分,但是我无法找到一个好的解决方案。

这是我到目前为止所做的:

<?php
wp_nav_menu(array(
    'sort_column' => 'menu_order',
    'theme_location' => 'primary-menu'
));// Prints the primary top level menu
$level = count($post->ancestors);
echo $level;// Just for testing purposes
if ($post->post_parent){
    $children = wp_list_pages("title_li=&child_of=" . $post->post_parent . "&echo=0&depth=1");
     $grandchildren = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0');
}
else{
    $children = wp_list_pages("title_li=&child_of=" . $post->ID . "&echo=0&depth=1");
}
if ($children) {
    echo $children;
}
if ($grandchildren){
    echo $grandchildren; 
}
?>

这是我遇到的问题。它以一种方式工作,因此,如果我单击顶层,则会出现第二层,如果单击第二层,则会出现第三层,但是当我单击第三层时,第二层会消失。

这让我发疯!我已经花了一天的时间阅读有关 get_post get_children 等的所有内容。

谢谢,

C

4

1 回答 1

0

这是我的菜单解决方案,带有子菜单和子菜单的子菜单......等。

我这样称呼菜单:

 <?php $defaults = array(
'theme_location'  => '',
'menu'            => 'TopMenu', 
'container'       => 'ul', 
'container_class' => 'topmenu-{topmenu slug}-container', 
'container_id'    => 'topmenu',
'menu_class'      => 'topmenu', 
'menu_id'         => 'topmenu-{topmenu slug}[-{increment}]',
'echo'            => true,
'fallback_cb'     => 'wp_page_menu',
'before'          => '',
'after'           => '',
'link_before'     => '',
'link_after'      => '',
'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
'depth'           => 0,
'walker'          => ''

); ?>

这个菜单使用了一个简单的 topmenu 类。好的,这是可以根据需要自定义的css。

.topmenu{
    border:none;
    border:0px;
    margin:0px;
    padding:0px 0px 0px 10px;
    font-family:Arial, serif;
    font-size:10px;
    list-style-type:none;

    }
.topmenu ul{
    height:20px;
    list-style:none;
    margin:0;
    padding:0;

     }
.topmenu li{
    float:left;
    padding:0px;
    list-style-type:none;

    }
.topmenu li a{
    background-color:#000000;
    color:#6699CC;
    display:block;
    line-height:20px;
    margin:0px;
    padding:0px 10px;
    text-align:center;
    text-transform:uppercase;
    letter-spacing:-1px;
    text-decoration:none;
    list-style-type:none;
    border-right:1px solid #666666;
    }
    .topmenu li:first-child a { border-left: none; }
    .topmenu li:last-child a{ 
    padding-right:0;
    border-right:none;

    }

    .topmenu li a:hover {
    color:#00CCFF;
    text-decoration:none;
    list-style-type:none;
    }

我希望这能帮到您。

于 2013-05-10T09:51:23.660 回答