web-dev-qa-db-fra.com

Menu avec les pages des parents, des enfants et/ou des frères et sœurs

Ici vous voyez le menu parent sélectionné dans la barre de navigation horizontale. J'ai déjà que ça marche. J'ai besoin d'une barre latérale identique à celle indiquée par le même parent et des enfants lorsqu'ils existent. Pour le moment, j'ai un bon code grâce à les commentaires de Michael sur WordPress Stack Exchange sur une question précédente . Mais ce code ne montre pas le parent au-dessus des pages enfants ni les pages enfants au-dessus des frères et sœurs. Toutes les idées, comment puis-je ajuster ce code créé par Michael:

<?php                  
    $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0&depth=2');                   
    if ($children) { ?>                   
        <ul id="three-menu">                   
        <?php echo $children; ?>                   
        </ul>                   
        <?php } //ends (if($children)//
    elseif($post->post_parent) { //if no children, try to get parent page and show siblings pages including the page itself
        $siblings = wp_list_pages('title_li=&child_of='.$post->post_parent.'&echo=0&depth=1');                  
        if ($siblings) { ?>                   
              <ul id="three-menu">                   
            <?php echo $siblings; ?>                   
            </ul> 
    <?php } //ends if($siblings)// ?>                  
        <?php } else { //optional: if no children and if no parent, then show all top level pages
        $pagelist = wp_list_pages('title_li=&echo=0&depth=1');                   
            if ($pagelist) { ?>                   
                <ul id="three-menu">                   
                <?php echo $pagelist; ?>                   
                </ul>
    <?php } //ends if($pagelist)// ?>
    <?php } ?>

La page WordPress Codex http://codex.wordpress.org/Function_Reference/wp_list_pages#List_current_Page_with_its_ancestors_and_children semble intéressante, mais je ne l'ai pas encore tout compris. ..

Mise à jour:

J'ai ajouté les enfants à une profondeur de deux avec la première déclaration if. Cela aide à charger les enfants et les frères et sœurs à un niveau de lien permanent tel que: http://domain.com/top-level-page/ . Je dois juste faire un peu de style et retravailler les niveaux suivants.

Solution CSS Update 2

Avec un peu d’aide, j’ai un menu qui fonctionne assez bien avec wep_list_pages et quelques CSS. Ceci est fondamentalement une solution CSS.

 <div id="home-menu">

                     <div class="wplp_menu">
                        <ul id="top-level-sidebar">
                     <?php wp_list_pages('title_li='); ?>
                        </ul>
                     </div>

                </div>  

et CSS:

li.current-page-ancestor a, li.current-menu-item a 
 {
    color:#146BBB; //#0D55A8;
}

ul.children .current_page_item a:link, 
ul.children .current_page_item a:visited {
    background-color:#CCCCCC;
    width: 250px;
}


.wplp_menu li{
list-style:none;    /*blends out list dots,can be removed if done somewhere else*/
}

ul#top-level-sidebar {
    background: #5097EA;
    width: 300px;
    margin: 0 10px 0 50px;
    float: left;
}

.wplp_menu .page_item a {
display:none;   
}
.wplp_menu .current_page_ancestor a,.wplp_menu .children .current_page_item a,.wplp_menu .current_page_item li a  {
display:block;
}

.current_page_item a {    /* CSS for active item*/  
font-weight:bold;
}
.current_page_item li a {
font-weight:normal;  /* Resets the above for its children */
}
1
rhand

Avec l'aide d'un développeur partenaire, j'ai opté pour une solution CSS. La solution a été ajoutée à la question ci-dessus. Il cache tout d'abord tous les éléments de page avec display:none, puis affiche les éléments dont j'ai besoin. La liste des pages est chargée avec les indentations nécessaires à l'aide de wp_list_pages('title_li=');

1
rhand