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>
    }
}
v3nt
fonte

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

Geert
fonte
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