我搜索并阅读了有关沃克课程的信息。我运行测试,玩弄代码,终于明白了。我希望这也能对其他人有所帮助。
为此,需要实现walker类。
这里有一个简单的例子。
$defaults = array(
\'theme_location\' => \'primary\',
\'container\' => \'ul\',
\'menu_class\' => \'nav navbar-nav main-nav\',
\'walker\' => new Primary_Walker_Nav_Menu()
);
wp_nav_menu( $defaults );
在上述代码块中
wp_nav_menu()
函数takes
$defaults
因为这是一个论点。在阵列中
$defaults
, 最后一个键是
walker
. walker键的值是类的对象
Primary_Walker_Nav_Menu
.
在里面functions.php
执行以下代码。
class Primary_Walker_Nav_Menu extends Walker_Nav_Menu {
function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
if ( array_search( \'menu-item-has-children\', $item->classes ) ) {
$output .= sprintf(
"\\n<li class=\'dropdown %s\'><a href=\'%s\' class=\'dropdown-toggle\'
data-toggle=\'dropdown\'>%s</a>\\n",
( array_search( \'current-menu-item\', $item->classes ) ||
array_search( \'current-page-parent\', $item->classes ) )
? \'active\' : \'\', $item->url, $item->title );
} else {
$output .= sprintf( "\\n<li %s><a href=\'%s\'>%s</a>\\n",
( array_search( \'current-menu-item\', $item->classes) )
? \' class="active"\' : \'\', $item->url, $item->title );
}
}
function start_lvl( &$output, $depth ) {
$indent = str_repeat( "\\t", $depth );
$output .= "\\n$indent<ul class=\\"dropdown-menu\\" role=\\"menu\\">\\n";
}
}
这个
start_el()
方法用于为单个树项目(例如
<li>
,
<span>
, 或
<a>
) 到
$output
.
这个start_lvl()
方法在walker到达新的;“分支机构”;在树结构中。通常,此方法用于添加容器HTML元素的开始标记(例如<ol>
, <ul>
, 或<div>
) 到$output
.
上述实现的输出将生成以下html代码块。
<ul id="menu-main-navigation" class="nav navbar-nav main-nav">
<li class="dropdown ">
<a href="http://karunshakya.com.np/services/" class="dropdown-toggle">Services</a>
<ul class="dropdown-menu" role="menu">
<li><a href="http://example.com/services/recrutement/">Sélection et recrutement</a></li>
<li><a href="http://example.com/services/personnel/">Mise disposition de personnel</a></li>
<li><a href="http://example.com/services/salaire/">Gestion de salaire</a></li>
</ul>
</li>
<li><a href="http://example.com/news/">News</a></li>
<li><a href="http://example.com/medias/">Medias</a></li>
<li class="last-child"><a href="http://example.com/contactez/">Contactez-nous</a></li>
</ul>
下面的链接解释了如何使用walker类:
http://code.tutsplus.com/tutorials/understanding-the-walker-class--wp-25401