Soporte » WordPress Avanzado » Crear un custom menu

  • Buenos días,

    Necesito crear un menú customizado en la home de la página web de un cliente para que en el menú aparezca las colecciones de los productos (categorías).

    Esto lo he podido crear siguiendo una guía de Internet donde me indican que utilice la función: wp_nav_menu y este es el código:

    function category_menu($event) {     
        
        if(is_shop() || is_product_category()){        
            wp_nav_menu(
                    array(
                        'menu' => 'menu_tienda',
                        'container'      => false,
                        'menu_class'     => 'shop-menu',
                        'walker'         => new Walker_Nav_Menu_Dropdown(),
                        'items_wrap'     => '<div class="mobile-menu"><form><select onchange="if (this.value) window.location.href=this.value" class="selection">%3$s</select></form></div>',
                        'after'          => '<span class="plus-minus"></span>',
                        'fallback_cb'    => false,
                    )
            ); 
            
        }
    }
    
    class Walker_Nav_Menu_Dropdown extends Walker_Nav_Menu {
    	function start_lvl(&$output, $depth){
    		$indent = str_repeat("\t", $depth); // don't output children opening tag (<code><ul></code>)
    	}
    
    	function end_lvl(&$output, $depth){
    		$indent = str_repeat("\t", $depth); // don't output children closing tag
    	}
    
    	/**
    	* Start the element output.
    	*
    	* @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. May be used for padding.
    	* @param  array $args    Additional strings.
    	* @return void
    	*/
    	function start_el(&$output, $item, $depth, $args) {
                    
                $category = get_queried_object();
                /*echo $category->term_id;
                
                echo "<pre>";
                var_dump($item);
                echo "</pre>";
                //die;*/
                $selected = '';
                if($category->term_id == $item->object_id){
                    $selected = 'selected';
                }
     		$url = '#' !== $item->url ? $item->url : '';
     		$output .= '<option '.$selected.' value="' . $url . '">' . $item->title;
    	}	
    
    	function end_el(&$output, $item, $depth){
    		$output .= "</option>\n"; // replace closing </li> with the option tag
    	}
    }

    Este menú es el que aparece justo en el desplegable debajo del logo [colecciones]

    El problema que tengo es que el desplegable genera un <select> donde no le puedo dar estilo a las <option> y no sé como cambiar esto para que en vez de ser un <select>, sea una lista <ul><li> para darle todo el estilo que me solicita el cliente.

    Por favor, tenéis alguna idea de como podría modificarlo para transformar este select en una lista? o si hay otra manera de crear este menú?

    Muchas gracias

    • Este debate fue modificado hace 3 días, 19 horas por jyanez95.
    • Este debate fue modificado hace 3 días, 19 horas por jyanez95.

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 1 respuesta (de un total de 1)
Viendo 1 respuesta (de un total de 1)
  • Debes estar registrado para responder a este debate.