J'ai un "Menu principal" wp_nav_menu tel que le suivant:
Ensuite, dans mon modèle, je veux pouvoir faire écho à wp_nav_menu dans les sous-éléments du menu principal, par exemple pour le niveau supérieur avec l'id de l'élément de menu-3, où élément de menu-3 est l'élément supérieur du menu actuel.
Donc, quelque chose comme ceci: (mais cela fonctionnerait bien sûr)
wp_nav_menu( array('menu' => 'Main Menu' 'menu-item-id' => '3' ));
Et cela reviendrait:
Si cela est important, je peux alors afficher les sous-éléments en tant qu’intérieur du menu latéral en fonction de la section d’éléments du menu principal de manière dynamique. Merci d'avance!
À noter, il ne s'agit pas d'une copie de "http://wordpress.stackexchange.com/questions/2802/display-a-portion-branch-of-the-menu-tree-using-wp-nav-menu". Bien que cette page comporte plusieurs réponses similaires, aucune ne fonctionne comme prévu avec la version actuelle de WordPress. Cela montre un élément de sous-menu particulier et tous ses éléments, enfants, leurs enfants, etc. (profondeur illimitée).
Si je comprends bien ce que vous voulez, vous pouvez le faire avec CSS. Vous appellerez normalement wp_nav_menu et le laisserez générer tous les liens, mais vous les masquerez tous à l'exception du sous-menu de la page en cours.
Votre CSS ressemblerait à quelque chose comme ça,
#sidebar ul.menu li
{
display: none;
}
#sidebar ul.menu li.current-page-parent,
#sidebar ul.menu li.current-page-parent ul,
#sidebar ul.menu li.current-page-parent ul.li
{
display: block;
}
Update : Vous pouvez consulter http://thataboycreative.com pour voir un exemple d'utilisation de ce contenu auparavant. Voici le CSS pertinent de cet exemple:
ul.sub-menu
{
display: none;
}
#menu-main-navigation > li.current-menu-item ul.sub-menu,
#menu-main-navigation > li.current-menu-ancestor ul.sub-menu
{
display: block;
}
J'ai créé un plugin pour cela - assurez-vous de passer l'ID en tant que chaîne et non en tant qu'entier. S'il vous plaît noter mon plugin - c'est mon premier! :)
Une autre façon de faire est de récupérer les articles directement au lieu d'utiliser wp_nav_menu Ceci est basé sur la structure réelle de la page, cependant, pas sur le menu.
functions.php:
function __construct()
{
$this->currentPageID = $this->getCurrentPageID();
$this->sectionChildren = $this->getSectionChildren();
}
function getCurrentPageID()
{
$currentPage = $_SERVER['REQUEST_URI'];
if($currentPage == '/')
$currentPage = '/home';
$currentPage = get_page_by_path($currentPage);
if($currentPage)
return $currentPage->ID;
else
return -1;
}
function getSectionID()
{
global $wpdb;
$currentSectionID = $wpdb->get_var("
SELECT post_parent
FROM ". $wpdb->posts ."
WHERE ID = ". $this->currentPageID
);
if($currentSectionID == 0)
return $this->currentPageID;
else
return $currentSectionID;
}
function getSectionChildren()
{
global $wpdb;
$children = $wpdb->get_results("
SELECT ID, post_title
FROM ". $wpdb->posts ."
WHERE
post_parent = ". $this->getSectionID() ." AND
post_type = 'page' AND
post_status = 'publish'
", ARRAY_A);
return $children;
}
sidebar.php:
<ul id="sub-navigation">
<?php foreach($dc->sectionChildren as $c) : ?>
<li <?php if($dc->currentPageID == $c['ID']) echo 'class="active"'; ?>><a href="<?php echo get_permalink($c['ID']); ?>"><?php echo $c['post_title']; ?></a></li>
<?php endforeach; ?>
</ul>