Error in the function Walker_Nav_Menu wordpress

1

I'm trying to put a custom menu with wordpress and I'm using the Walker_Nav_Menu but when I put the function I jump a poster of

Warning: Declaration of BootstrapNavMenuWalker :: start_lvl (& $ output, $ depth) should be compatible with Walker_Nav_Menu :: start_lvl (& $ output, $ depth = 0, $ args = Array) in / www /qkstudiodemo.com/htdocs/camconnection/web/wp-content/themes/camconnection/functions.php on line 212

class BootstrapNavMenuWalker extends Walker_Nav_Menu {
	function start_lvl( &$output, $depth ) {
		$indent = str_repeat( "\t", $depth );
		$submenu = ($depth > 0) ? ' sub-menu' : '';
		$output	   .= "\n$indent<ul class=\"dropdown-menu$submenu depth_$depth\">\n";
	}
	function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
		$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
		$li_attributes = '';
		$class_names = $value = '';
		$classes = empty( $item->classes ) ? array() : (array) $item->classes;
		
		// managing divider: add divider class to an element to get a divider before it.
		$divider_class_position = array_search('divider', $classes);
		if($divider_class_position !== false){
			$output .= "<li class=\"divider\"></li>\n";
			unset($classes[$divider_class_position]);
		}
		
		$classes[] = ($args->has_children) ? 'dropdown' : '';
		$classes[] = ($item->current || $item->current_item_ancestor) ? 'active' : '';
		$classes[] = 'menu-item-' . $item->ID;
		if($depth && $args->has_children){
			$classes[] = 'dropdown-submenu';
		}
		$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
		$class_names = ' class="' . esc_attr( $class_names ) . '"';
		$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
		$id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';
		$output .= $indent . '<li' . $id . $value . $class_names . $li_attributes . '>';
		$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        ) .'"' : '';
		$attributes .= ($args->has_children) 	    ? ' class="dropdown-toggle" data-toggle="dropdown"' : '';
		$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 .= ($depth == 0 && $args->has_children) ? ' <b class="caret"></b></a>' : '</a>';
		$item_output .= $args->after;
		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
	}
	
	function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
		//v($element);
		if ( !$element )
			return;
		$id_field = $this->db_fields['id'];
		//display this element
		if ( is_array( $args[0] ) )
			$args[0]['has_children'] = ! empty( $children_elements[$element->$id_field] );
		else if ( is_object( $args[0] ) )
			$args[0]->has_children = ! empty( $children_elements[$element->$id_field] );
		$cb_args = array_merge( array(&$output, $element, $depth), $args);
		call_user_func_array(array(&$this, 'start_el'), $cb_args);
		$id = $element->$id_field;
		// descend only when the depth is right and there are childrens for this element
		if ( ($max_depth == 0 || $max_depth > $depth+1 ) && isset( $children_elements[$id]) ) {
			foreach( $children_elements[ $id ] as $child ){
				if ( !isset($newlevel) ) {
					$newlevel = true;
					//start the child delimiter
					$cb_args = array_merge( array(&$output, $depth), $args);
					call_user_func_array(array(&$this, 'start_lvl'), $cb_args);
				}
				$this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output );
			}
			unset( $children_elements[ $id ] );
		}
		if ( isset($newlevel) && $newlevel ){
			//end the child delimiter
			$cb_args = array_merge( array(&$output, $depth), $args);
			call_user_func_array(array(&$this, 'end_lvl'), $cb_args);
		}
		//end this element
		$cb_args = array_merge( array(&$output, $element, $depth), $args);
		call_user_func_array(array(&$this, 'end_el'), $cb_args);
	}
}
			 <?php
                 $args = array(
                   'theme_location' => 'principal-menu',
                   'container' => '',
                   'menu_class' => 'nav navbar-nav pull-right',
                   'menu_id' => 'nav',
                   'walker'	 => new BootstrapNavMenuWalker()
                   );
                   wp_nav_menu( $args );
              
            ?>	
            
 <!-- ESTE ES EL MENU EN BOOTSTRAP QUE INTENTO PONER -->           
 <ul id="nav" class="nav navbar-nav pull-right">
				<li  class="active" ><a href="index.html">Home</a></li>
				<li ><a href="<?php bloginfo( 'url' ); ?>/quienes-somos">Quienes Somos</a></li>
				<li class="dropdown "">
				<a href="#" class="dropdown-toggle" data-toggle="dropdown">Productos <i class="icon-angle-down"></i></a>
				<ul class="dropdown-menu">

		
					<li><a  href="vero/1/index.html">Vero Software </a></li>
		
					<li><a  href="solidworks/index.html" >SolidWorks </a></li>
		

				</ul>
				</li>
				<li class="highlight "><a href="<?php bloginfo( 'url' ); ?>/soporte"><i class="icon icon-gear icon-spin"></i> Soporte 24/7 <i class="icon icon-gear icon-spin"></i></a></li>
				<li class="dropdown ">
				<a href="#" class="dropdown-toggle" data-toggle="dropdown">Servicios <i class="icon-angle-down"></i></a>
				<ul class="dropdown-menu">
					<li><a href="<?php bloginfo( 'url' ); ?>/training-vero-software">Training Vero Software</a></li>
					<li><a href="<?php bloginfo( 'url' ); ?>/implementacion">Implementación</a></li>
					<li><a href="<?php bloginfo( 'url' ); ?>/consultoria">Consultoría</a></li>
					<li><a href="requerimientos.html">Requerimientos del sistema</a></li>
					<li><a href="ultimaversion.html">Información sobre la última versión</a></li>
				</ul>
				</li>
				<li ><a href="<?php bloginfo( 'url' ); ?>/noticias" >Noticias</i></a></li>
				
				<li><a href="<?php bloginfo( 'url' ); ?>/contacto">Contacto</a></li>

			</ul>
    
asked by MarianoF 28.03.2018 в 14:08
source

1 answer

2

It seems the number of arguments you pass to him start_lvl does not match that of the parent class.

Try changing it like this:

function start_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat( "\t", $depth );
        $submenu = ($depth > 0) ? ' sub-menu' : '';
        $output    .= "\n$indent<ul class=\"dropdown-menu$submenu depth_$depth\">\n";
    }
    
answered by 28.03.2018 / 15:44
source