2016-05-09 13 views
0

Die wp_nav_menu produziert Standardklassen für die <div> und <ul> Herstellung der folgenden ....Ändern von Standard wp_nav_menu Klassen

<div class="menu-horizontal-container"> 
    <ul id="menu-horizontal" class="menu"> 
     <li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14"><a href="#">Menu 1</a></li> 
     <li id="menu-item-18" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-18"><a href="#">Menu 2</a></li> 
     <li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19"><a href="#">Menu 3</a></li> 
    </ul> 
</div> 

... aber ich möchte die Klassen und IDs der folgenden ändern .... Wie kann das gemacht werden?

<div class="collapse navbar-collapse"> 
    <ul class="nav navbar-nav navbar-right" id="main_navigation_menu"> 
     <li><a href="#">Menu 1</a></li> 
     <li><a href="#">Menu 2</a></li> 
     <li><a href="#">Menu 3</a></li> 
    </ul> 
</div> 
+0

Ich könnte falsch liegen, aber das scheint eher ein CSS-Problem. Dh, ändern Sie das CSS für jede ID/Klasse, anstatt zu versuchen, zu ändern, was die nav-Funktion generiert. Von dem, was ich weiß, ist das ein bisschen außerhalb des Rahmens dessen, was wir hier anweisen können, weil es eher so ist, dass du einen Entwickler brauchst, der es für dich tut. –

+0

@GaryCarlyCook .... die wp_nav_menu Funktion generiert die IDs und Klassen im ersten Beispiel oben ... es ist nicht so einfach wie diese Klassen/IDs zu behalten und den Stil zu ändern, da es auch JQuery gibt, die dynamisch Änderungen an einigen ... Daher bevorzuge ich es, die Klassen-/ID-Namen zu ändern. Nathan unten hat mir die Antwort gegeben, nach der ich gesucht habe. – TerryAlly

Antwort

0

Hier function.php ist die Lösung, die die Beiträge @Oleg und @Nathan mit zwei möglichen Ausgängen kombiniert ... auch das Wichtigste, das Thema wurde erklärt Position anstelle des Menünamens.

OUTPUT A - ohne die Walker_Nav_Menu Funktion

wp_nav_menu(array(
    'theme_location'  => 'primary', 
    'container'   => 'div', 
    'container_class'  => 'collapse navbar-collapse', 
    'menu_class'   => 'nav navbar-nav navbar-right', 
    'menu_id'    => 'main_navigation_menu', 
)) ; 

hergestellt:

<div class="collapse navbar-collapse"> 
<ul id="main_navigation_menu" class="nav navbar-nav navbar-right"> 
    <li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14"><a href="#">Menu 1</a></li> 
    <li id="menu-item-18" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-18"><a href="#">Menu 2</a></li> 
    <li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19"><a href="#">Menu 3</a></li> 
</ul> 
</div> 

OUTPUT B - mit der Walker_Nav_Menu Funktion, sondern ändert 'echo' auf WAHR in den Parametern:

wp_nav_menu(array(
    'theme_location'  => 'primary', 
    'container'   => 'div', 
    'container_class'  => 'collapse navbar-collapse', 
    'menu_class'   => 'nav navbar-nav navbar-right', 
    'menu_id'    => 'main_navigation_menu', 
    'echo'    => true, 
    'walker'    => new Walker_Custom_Menu, 
)) ; 

produziert:

<div class="collapse navbar-collapse"> 
    <ul id="main_navigation_menu" class="nav navbar-nav navbar-right"> 
     <li><a href="#/">Menu 1</a></li> 
     <li><a href="#">Menu 2</a></li> 
     <li><a href="#">Menu 3</a></li> 
    </ul> 
</div> 

Dank @Oleg und @Nathan.

0

Sie müssen die Parameter, die Sie in zu wp_nav_menu passieren einzustellen. Insbesondere müssen Sie 'menu_class', 'menu_id' und 'container_class' einstellen.

Beispiel:

wp_nav_menu(array( 
    'theme_location' => 'menu-horizontal', 
    'container_class' => 'collapse navbar-collapse', 
    . . . 
)); 

Weiterführende Literatur: https://developer.wordpress.org/reference/functions/wp_nav_menu/

0

es hinzufügen, wo Sie Menü angezeigt werden soll.

$menuParameters = array(
    'theme_location'  => 'header-menu', 
    'container'   => 'div', 
    'container_class'  => 'collapse navbar-collapse', 
    'menu_class'   => 'nav navbar-nav navbar-right', 
    'menu_id'    => 'main_navigation_menu', 
    'echo'    => false, 
    'walker'    => new Walker_Custom_Menu, 
); 

hinzufügen walker

class Walker_Custom_Menu extends Walker_Nav_Menu { 
    /** 
    * Start the element output. 
    * 
    * @see Walker::start_el() 
    * 
    * @since 3.0.0 
    * @since 4.4.0 'nav_menu_item_args' filter was added. 
    * 
    * @param string $output Passed by reference. Used to append additional content. 
    * @param object $item Menu item data object. 
    * @param int $depth Depth of menu item. Used for padding. 
    * @param array $args An array of arguments. @see wp_nav_menu() 
    * @param int $id  Current item ID. 
    */ 
    public function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) { 
     $indent = ($depth) ? str_repeat("\t", $depth) : ''; 

     $classes = empty($item->classes) ? array() : (array) $item->classes; 
     $classes[] = 'menu-item-' . $item->ID; 

     /** 
     * Filter the arguments for a single nav menu item. 
     * 
     * @since 4.4.0 
     * 
     * @param array $args An array of arguments. 
     * @param object $item Menu item data object. 
     * @param int $depth Depth of menu item. Used for padding. 
     */ 
     $args = apply_filters('nav_menu_item_args', $args, $item, $depth); 

     /** 
     * Filter the CSS class(es) applied to a menu item's list item element. 
     * 
     * @since 3.0.0 
     * @since 4.1.0 The `$depth` parameter was added. 
     * 
     * @param array $classes The CSS classes that are applied to the menu item's `<li>` element. 
     * @param object $item The current menu item. 
     * @param array $args An array of {@see wp_nav_menu()} arguments. 
     * @param int $depth Depth of menu item. Used for padding. 
     */ 

     $class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item, $args, $depth)); 
     $class_names = $class_names ? ' class="' . esc_attr($class_names) . '"' : ''; 

     /** 
     * Filter the ID applied to a menu item's list item element. 
     * 
     * @since 3.0.1 
     * @since 4.1.0 The `$depth` parameter was added. 
     * 
     * @param string $menu_id The ID that is applied to the menu item's `<li>` element. 
     * @param object $item The current menu item. 
     * @param array $args An array of {@see wp_nav_menu()} arguments. 
     * @param int $depth Depth of menu item. Used for padding. 
     */ 
     $id = apply_filters('nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args, $depth); 
     $id = $id ? ' id="' . esc_attr($id) . '"' : ''; 

     $output .= $indent . '<li>'; 

     $atts = array(); 
     $atts['title'] = ! empty($item->attr_title) ? $item->attr_title : ''; 
     $atts['target'] = ! empty($item->target)  ? $item->target  : ''; 
     $atts['rel'] = ! empty($item->xfn)  ? $item->xfn  : ''; 
     $atts['href'] = ! empty($item->url)  ? $item->url  : ''; 

     /** 
     * Filter the HTML attributes applied to a menu item's anchor element. 
     * 
     * @since 3.6.0 
     * @since 4.1.0 The `$depth` parameter was added. 
     * 
     * @param array $atts { 
     *  The HTML attributes applied to the menu item's `<a>` element, empty strings are ignored. 
     * 
     *  @type string $title Title attribute. 
     *  @type string $target Target attribute. 
     *  @type string $rel The rel attribute. 
     *  @type string $href The href attribute. 
     * } 
     * @param object $item The current menu item. 
     * @param array $args An array of {@see wp_nav_menu()} arguments. 
     * @param int $depth Depth of menu item. Used for padding. 
     */ 
     $atts = apply_filters('nav_menu_link_attributes', $atts, $item, $args, $depth); 

     $attributes = ''; 
     foreach ($atts as $attr => $value) { 
      if (! empty($value)) { 
       $value = ('href' === $attr) ? esc_url($value) : esc_attr($value); 
       $attributes .= ' ' . $attr . '="' . $value . '"'; 
      } 
     } 

     /** This filter is documented in wp-includes/post-template.php */ 
     $title = apply_filters('the_title', $item->title, $item->ID); 

     /** 
     * Filter a menu item's title. 
     * 
     * @since 4.4.0 
     * 
     * @param string $title The menu item's title. 
     * @param object $item The current menu item. 
     * @param array $args An array of {@see wp_nav_menu()} arguments. 
     * @param int $depth Depth of menu item. Used for padding. 
     */ 
     $title = apply_filters('nav_menu_item_title', $title, $item, $args, $depth); 

     $item_output = $args->before; 
     $item_output .= '<a'. $attributes .'>'; 
     $item_output .= $args->link_before . $title . $args->link_after; 
     $item_output .= '</a>'; 
     $item_output .= $args->after; 

     /** 
     * Filter a menu item's starting output. 
     * 
     * The menu item's starting output only includes `$args->before`, the opening `<a>`, 
     * the menu item's title, the closing `</a>`, and `$args->after`. Currently, there is 
     * no filter for modifying the opening and closing `<li>` for a menu item. 
     * 
     * @since 3.0.0 
     * 
     * @param string $item_output The menu item's starting HTML output. 
     * @param object $item  Menu item data object. 
     * @param int $depth  Depth of menu item. Used for padding. 
     * @param array $args  An array of {@see wp_nav_menu()} arguments. 
     */ 
     $output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args); 
    } 
}