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


10

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

Eu estive olhando para os caminhantes, mas acho realmente difícil descobrir qual é o último item (ou até 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>
    }
}

Respostas:


19

Você não precisa de um andador neste caso. Um filtro chamado wp_nav_menu_itemsestá 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 você deseja segmentar apenas um menu específico, existe um filtro dinâmico:

wp_nav_menu_{$menu->slug}_items


ace - esqueci completamente esse método ... obrigado.
V3nt #

3
Você pode marcar $argspara adicionar a pesquisa apenas a um local de tema (menu) específico.
Stephen Harris
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.