从wp_NAV_MENU中删除所有内容

时间:2012-06-05 作者:pagol

我的主题有三个菜单:两个是下拉菜单,另一个不同。我想从不同的菜单中删除div、class等。

例如:我有三个菜单

topnav(下拉菜单)

  • 主菜单(下拉菜单)
  • 我的菜单(正常)
    1. 我的当前代码:

      <div id="megaMenu" class="megaMenuContainer megaMenu-nojs megaFullWidth megaMenuHorizontal megaMenuOnHover wpmega-autoAlign wpmega-withjs wpmega-noconflict"><ul id="megaUber" class="megaMenu"><li id="menu-item-987" class="menu-item menu-item-type-post_type menu-item-object-post current-menu-item ss-nav-menu-item-0 ss-nav-menu-item-depth-0 ss-nav-menu-reg"><a href="http://localhost/wordpress/?p=967"><span class="wpmega-link-title">who we are</span></a></li>
      <li id="menu-item-986" class="menu-item menu-item-type-post_type menu-item-object-post ss-nav-menu-item-1 ss-nav-menu-item-depth-0 ss-nav-menu-reg"><a href="http://localhost/wordpress/?p=969"><span class="wpmega-link-title">management team</span></a></li>
      <li id="menu-item-985" class="menu-item menu-item-type-post_type menu-item-object-post ss-nav-menu-item-2 ss-nav-menu-item-depth-0 ss-nav-menu-reg"><a href="http://localhost/wordpress/?p=971"><span class="wpmega-link-title">award</span></a></li>
      <li id="menu-item-984" class="menu-item menu-item-type-post_type menu-item-object-post ss-nav-menu-item-3 ss-nav-menu-item-depth-0 ss-nav-menu-reg"><a href="http://localhost/wordpress/?p=973"><span class="wpmega-link-title">career</span></a></li>
      <li id="menu-item-983" class="menu-item menu-item-type-post_type menu-item-object-post ss-nav-menu-item-4 ss-nav-menu-item-depth-0 ss-nav-menu-reg"><a href="http://localhost/wordpress/?p=975"><span class="wpmega-link-title">contact us</span></a></li>
      </ul></div>
      
      我想从我的菜单中删除所有内容,只是想<li>menu name </li>. 另外,我想active 类应用于激活的菜单项<li class="active">menu name </li>.

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

    除了WordPress预构建的助行器外,您还可以使用其他助行器。

    将此添加到您的函数中。主题中的php文件:

    class Clean_Nav_Walker extends Walker {
        var $tree_type = array( \'post_type\', \'taxonomy\', \'custom\' );
        var $db_fields = array( \'parent\' => \'menu_item_parent\', \'id\' => \'db_id\' );
        function start_lvl(&$output, $depth) {
            $indent = str_repeat("\\t", $depth);
            $output .= "\\n$indent<ul class=\\"sub-menu\\">\\n";
        }
        function end_lvl(&$output, $depth) {
            $indent = str_repeat("\\t", $depth);
            $output .= "$indent</ul>\\n";
        }
        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;
            $classes = in_array( \'active\', $classes ) ? array( \'active\' ) : array();
            $class_names = join( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item, $args ) );
            $class_names = strlen( trim( $class_names ) ) > 0 ? \' class="\' . esc_attr( $class_names ) . \'"\' : \'\';
            $id = apply_filters( \'nav_menu_item_id\', \'\', $item, $args );
            $id = strlen( $id ) ? \' id="\' . esc_attr( $id ) . \'"\' : \'\';
            $output .= $indent . \'<li\' . $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 .= \'</a>\';
            $item_output .= $args->after;
            $output .= apply_filters( \'walker_nav_menu_start_el\', $item_output, $item, $depth, $args );
        }
        function end_el(&$output, $item, $depth) {
            $output .= "</li>\\n";
        }
    }
    
    然后确保在调用时指定新的自定义Walkerwp_nav_menu().

    <?php
      $walker = new Clean_Nav_Walker();
      $attr = array( \'theme_location\' => \'quicklink\', \'walker\' => $walker);
    
      wp_nav_menu( $attr );
    ?>
    

    结束