Usando um menu walker, adicione um item personalizado no final dos itens do menu

9

Eu preciso adicionar um campo de pesquisa no final de um menu em um item da lista.

Eu tenho olhado para os caminhantes, mas acho muito difícil descobrir qual é o último item (ou até mesmo obter o total). Também onde eu adicionaria o código para o item personalizado.

Eu tenho atualmente;

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>
    }
}
    
por v3nt 16.05.2012 / 12:15

1 resposta

15

Você não precisa de um andador neste caso. Um filtro chamado wp_nav_menu_items está disponível. Permite editar os itens da lista de um menu. Basta anexar seu próprio item da lista ao campo de pesquisa.

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: se pretender apenas segmentar um menu específico, existe um filtro dinâmico:

wp_nav_menu_{$menu->slug}_items

    
por Geert 16.05.2012 / 12:31

Tags