WP_NAV_MENU,Walker类,作为li类的类别

时间:2012-07-26 作者:Gab

好的,我正在尝试显示我的主菜单,因此我使用以下代码:

<?php $defaults = array(
    \'theme_location\'  => \'\',
    \'menu\'            => \'\', 
    \'container\'       => false,
    \'container_id\'    => \'\',
    \'menu_class\'      => \'menu\', 
    \'menu_id\'         => \'\',
    \'echo\'            => true,
    \'fallback_cb\'     => \'wp_page_menu\',
    \'before\'          => \'\',
    \'after\'           => \'\',
    \'link_before\'     => \'\',
    \'link_after\'      => \'\',
    \'items_wrap\'      => \'<ul id="%1$s" class="unstyled pull-right %2$s">%3$s</ul>\',
    \'depth\'           => 0,
    \'walker\'          => new description_walker()
); ?>
<?php wp_nav_menu( $defaults ); ?>
菜单中填充了类别名称(非页面),并输出以下内容:

<ul id="menu-principal" class="unstyled pull-right menu">
<li id="menu-item-597" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-597"><a href="#">menu</a></li>
<li id="menu-item-595" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-595"><a href="#">menu</a></li>
<li id="menu-item-596" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-596"><a href="#">menu</a></li>
<li id="menu-item-593" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-593"><a href="#">menu</a></li>
<li id="menu-item-594" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-594"><a href="#">menu</a></li>
<li id="menu-item-592" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-592"><a href="#">menu</a></li>
<li id="menu-item-591" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-591"><a href="#">menu</a></li>
<li id="menu-item-592" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-592"><a href="#">menu</a></li>
<li id="menu-item-591" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-591"><a href="#">menu</a></li>
</ul>
我想用类别名称替换所有这些li类,所以我尝试在函数中使用walker类。php:https://gist.github.com/1053467

所以我只有很少的东西,但我不知道如何添加类。class=“类别类别名称”(即class=“类别摄影”)。

非常感谢您的时间和帮助。

1 个回复
最合适的回答,由SO网友:pcarvalho 整理而成

您的学步课程几乎可以满足您的Gab需求。

代替第21行:

        $output     .= \'<li>\';
在第38行之前向下移动

$output .= apply_filters(
        \'walker_nav_menu_start_el\' [...]
把它改成

$output .= $indent . \'<li id="nav-menu-item-\'. $item->ID . \'" class="\'. $title . \'">\';
你应该将类别名称作为你的li的第一个类

你看,因为你已经构建了漂亮的title$title,你可以使用它来构建li标记,然后像以前一样构建a标记。

编辑:

 $mycatid = $item->object_id;
 $category = get_category($mycatid );
 $mycatslug = $category->slug;
 $output .= $indent . \'<li id="nav-menu-item-\'. $item->ID . \'" class="\'. $mycatslug . \'">\';

结束

相关推荐

dropdown menu, with walker

我正在使用下面的walker创建一个下拉菜单,我将在我正在处理的项目的移动版本上使用它。。。它工作得很好,但是,当我选择页面时,它不会加载页面,我缺少了什么?class Walker_Nav_Menu_Dropdown extends Walker_Nav_Menu{ function start_lvl(&$output, $depth){ $indent = str_repeat(\"\\t\", $depth); // don\'t output chil