Usando un andador de menú, agregue un elemento personalizado al final de los elementos del menú

10

Necesito agregar un campo de búsqueda al final de un menú en un elemento de la lista.

He estado mirando a los caminantes, pero me resulta muy difícil descubrir cuál es el último elemento (o incluso obtener el total). Además, ¿dónde agregaría el código para el elemento personalizado?

Actualmente tengo;

class mainNav_walker extends Walker_Nav_Menu
{
    public function start_el( &$output, $item, $depth, $args )
    {
        //print_r($item);

        $output .= $this->custom_content( $item );
        parent::start_el( &$output, $item, $depth, $args );
    }

    protected function custom_content( $item )
    {
       // add <li>SEARCH FIELD HERE?</li>
    }
}
v3nt
fuente

Respuestas:

19

No necesitas un andador en este caso. Un filtro llamado wp_nav_menu_itemsestá disponible. Le permite editar los elementos de la lista de un menú. Simplemente agregue su propio elemento de lista con el campo de búsqueda.

add_filter( 'wp_nav_menu_items', 'add_search_to_nav', 10, 2 );

function add_search_to_nav( $items, $args )
{
    $items .= '<li>SEARCH</li>';
    return $items;
}

Nota: si solo desea orientar un menú específico, existe un filtro dinámico:

wp_nav_menu_{$menu->slug}_items

Geert
fuente
as - olvidé por completo ese método ... gracias.
v3nt
3
Puede marcar $argspara agregar solo la búsqueda a una ubicación de tema (menú) en particular.
Stephen Harris