修改漫游器以在子菜单上方插入父母的描述

时间:2015-02-04 作者:Redu

我想在子菜单列表项的顶部显示父项的标题或描述。我对如何通过调用start\\u lvl函数在之后插入来修改walker有基本的了解<u> 或在之后开始插入<li> 但无法将父项的“item->Description”集中到$输出变量中。

例如

<ul>
   <li>
      <a href="">German Cars</a>
      <ul>
         <li><a href="">BMW</a></li>
         <li><a href="">Mercedes</a></li>
         <li><a href="">Volkswagen</a></li>
      </ul>
   </li>
   <li>
      <a href="">American Cars</a>
      <ul>
         <li><a href="">Chrysler</a></li>
         <li><a href="">Ford</a></li>
         <li><a href="">General Motors</a></li>
      </ul>
   </li>
</ul>
表现得像

<ul>
   <li>
      <a href="">German Cars</a>
      <ul>
         <h2>Cars Made in Germany </h2> <!--parent list item\'s description shows here-->
         <li><a href="">BMW</a></li>
         <li><a href="">Mercedes</a></li>
         <li><a href="">Volkswagen</a></li>
      </ul>
   </li>
   <li>
      <a href="">American Cars</a>
      <ul>
         <h2>Cars Made in the USA</h2> <!--parent list item\'s description shows here-->
         <li><a href="">Chrysler</a></li>
         <li><a href="">Ford</a></li>
         <li><a href="">General Motors</a></li>
      </ul>
   </li>
</ul>
有人能带我到这里吗。。?

1 个回复
SO网友:robin

如果我正确理解您的问题,您需要做的第一件事是,转到菜单/wp admin/nav menus。php(屏幕选项)和描述上的复选框(勾选)。你的学步课应该是这样的

    class Menu_With_Description extends Walker_Nav_Menu {
    function start_el(&$output, $item, $depth, $args) {
        global $wp_query;
        $indent = ( $depth ) ? str_repeat( "\\t", $depth ) : \'\';

        $class_names = $value = \'\';

        $classes = empty( $item->classes ) ? array() : (array) $item->classes;

        $class_names = join( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item ) );
        $class_names = \' class="\' . esc_attr( $class_names ) . \'"\';

        $output .= $indent . \'<li id="menu-item-\'. $item->ID . \'"\' . $value . $class_names .\'>\';

        $attributes = ! empty( $item->attr_title ) ? \' title="\' . esc_attr( $item->attr_title ) .\'"\' : \'\';
        $attributes .= ! empty( $item->target ) ? \' target="\' . esc_attr( $item->target ) .\'"\' : \'\';
        $attributes .= ! empty( $item->xfn ) ? \' rel="\' . esc_attr( $item->xfn ) .\'"\' : \'\';
        $attributes .= ! empty( $item->url ) ? \' href="\' . esc_attr( $item->url ) .\'"\' : \'\';

        $item_output = $args->before;
        $item_output .= \'<a\'. $attributes .\'>\';
        $item_output .= $args->link_before . apply_filters( \'the_title\', $item->title, $item->ID ) . $args->link_after;
        $item_output .= \'<br /><span class="sub">\' . $item->description . \'</span>\';
        $item_output .= \'</a>\';
        $item_output .= $args->after;

        $output .= apply_filters( \'walker_nav_menu_start_el\', $item_output, $item, $depth, $args );
    }
}
然后找到wp\\u nav\\u菜单并使用

    <?php $walker = new Menu_With_Description; ?>

<?php wp_nav_menu( array( \'theme_location\' => \'primary\', \'menu_class\' => \'nav-menu\', \'walker\' => $walker ) ); ?>

结束

相关推荐

Any walker causes blank menu?

使用以下或任何其他自定义Walker\\u Nav\\u菜单似乎会导致导航菜单为空,我尝试指定默认值以确保我没有发疯,但它仍然会将输出为空。。。有什么想法吗?<?php wp_nav_menu( array( \'theme_location\' => \'primary\', \'depth\' => 3, \'walker\' => new Walker_Nav_Menu() ) ); ?> 在上下文中<?php /** * The He