J'essaie de générer un menu en utilisant wp_nav_menu. Ma sortie attendue est la suivante:
<!-- Main Menu -->
<div class="navbar navbar-blue navbar-fixed-top" style="margin-top:74px">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<div class="nav-collapse collapse">
<ul class="nav">
<li class="divider-vertical"></li>
<li class="dropdown dropdown-hover">
<a href="dashboard.html?lang=en" class="dropdown-toggle" data-toggle="dropdown">Dashboard <b class="caret"></b></a>
<!-- Dropdown Menu -->
<ul class="dropdown-menu">
<li><a href="dashboard.html?lang=en">Dashboard #2</a></li>
<li><a href="dashboard_1.html?lang=en">Dashboard #1</a></li>
</ul>
<!-- End Dropdown Menu -->
</li>
<li class="divider-vertical"></li>
<li class="active"><a href="gallery.html?lang=en">Photo Gallery</a></li>
<li class="divider-vertical"></li>
<li class="dropdown dropdown-hover">
<a href="site-pages.html?lang=en" class="dropdown-toggle" data-toggle="dropdown">Site Pages <b class="caret"></b></a>
<!-- Dropdown Menu -->
<ul class="dropdown-menu">
<li><a href="site-pages.html?lang=en">View pages</a></li>
<li><a href="site-pages-add.html?lang=en">Add page</a></li>
</ul>
<!-- End Dropdown Menu -->
</li>
<li class="divider-vertical"></li>
<li class="dropdown dropdown-hover">
<a href="products.html?lang=en" class="dropdown-toggle" data-toggle="dropdown">eCommerce <b class="caret"></b></a>
<!-- Dropdown Menu -->
<ul class="dropdown-menu">
<li class="nav-header">Catalog</li>
<li><a href="categories.html?lang=en">Categories</a></li>
<li><a href="products.html?lang=en">Products</a></li>
<li><a href="products-add.html?lang=en">Add product</a></li>
<li class="divider"></li>
<li><a href="orders.html?lang=en">Orders</a></li>
</ul>
<!-- End Dropdown Menu -->
</li>
<li class="divider-vertical"></li>
<li class="dropdown dropdown-hover">
<a href="clients.html?lang=en" class="dropdown-toggle" data-toggle="dropdown">Members <b class="caret"></b></a>
<!-- Dropdown Menu -->
<ul class="dropdown-menu">
<li><a href="clients.html?lang=en">Clients</a></li>
<li><a href="account.html?lang=en">Edit account</a></li>
</ul>
<!-- End Dropdown Menu -->
</li>
<li class="divider-vertical"></li>
<li class="dropdown dropdown-hover">
<a href="charts.html?lang=en" class="dropdown-toggle" data-toggle="dropdown">Other <b class="caret"></b></a>
<!-- Dropdown Menu -->
<ul class="dropdown-menu">
<li><a href="charts.html?lang=en">Charts</a></li>
</ul>
<!-- End Dropdown Menu -->
</li>
<li class="divider-vertical"></li>
<li class="dropdown dropdown-hover">
<a href="documentation.html?lang=en" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
<!-- Dropdown Menu -->
<ul class="dropdown-menu">
<li><a href="documentation.html?lang=en">Overview</a></li>
<li><a href="documentation/features.html?lang=en">Features</a></li>
<li><a href="documentation/getting-started.html?lang=en">Getting Started</a></li>
<li><a href="documentation/customization-guide.html?lang=en">Customization Guide</a></li>
<li class="divider"></li>
<li class="nav-header">Powered by</li>
<li><a href="documentation/credits.html?lang=en">Credits</a></li>
</ul>
<!-- End Dropdown Menu -->
</li>
<li class="divider-vertical"></li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
</div>
</div>
<!-- End Main Menu -->
Jusqu'à présent, je suis capable d'utiliser une fonction de promeneur personnalisée pour wp_nav_menu et de générer presque tout le code HTML comme ci-dessus, mais je ne parviens pas à insérer class = "dropdown-toggle" data-toggle = "dropdown" à l'intérieur du tag . Cela me permettra de basculer le menu déroulant je suppose (actuellement, je ne peux générer que le menu principal. Les sous-menus apparaissent en HTML mais ils ne sont pas visibles dans le navigateur.).
Voici mes efforts jusqu'à présent:
<!-- Main Menu -->
<div class="navbar navbar-blue navbar-fixed-top" style="margin-top:74px">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<?php class My_Walker_Nav_Menu extends Walker_Nav_Menu {
function start_lvl(&$output, $depth) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<ul class=\"dropdown-menu\">\n";
}
}
$defaults = array(
'theme_location' => '',
'menu' => '',
'container' => 'div',
'container_class' => 'nav-collapse collapse',
'container_id' => '',
'menu_class' => 'nav',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '<ul id="%1$s" class="%2$s"><li class="divider-vertical"></li>%3$s</ul>',
'depth' => 0,
'walker' => new My_Walker_Nav_Menu
);
wp_nav_menu( $defaults );
?>
</div>
</div>
</div>
<!-- End Main Menu -->
Quelqu'un peut-il m'aider à modifier ma fonction de marcheur personnalisée afin d’obtenir la sortie HTML souhaitée donnée ci-dessus. Merci d'avance.
Vous voulez modifier la méthode start_el
comme vous avez fait la méthode start_lvl
. À la base, cela reviendrait à modifier cette ligne :
$item_output .= '<a'. $attributes .'>';
Pour ressembler à celui-ci:
$item_output .= '<a class="dropdown-toggle" data-toggle="dropdown"'. $attributes .'>';
Il semble que vous aurez besoin d'une logique plus compliquée pour éviter d'insérer cette chaîne dans tous les sous-menus, mais c'est l'idée.