À l'aide d'un menu walker, ajoutez un élément personnalisé à la fin des éléments du menu

10

Je dois ajouter un champ de recherche à la fin d'un menu dans un élément de liste.

J'ai regardé des marcheurs mais j'ai vraiment du mal à comprendre quel est le dernier article (ou même obtenir le total). Aussi, où ajouter le code de l'élément personnalisé.

J'ai actuellement;

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
la source

Réponses:

19

Vous n'avez pas besoin d'un déambulateur dans ce cas. Un filtre appelé wp_nav_menu_itemsest disponible. Il vous permet de modifier les éléments de la liste d'un menu. Ajoutez simplement votre propre élément de liste avec le champ de recherche.

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;
}

Remarque: si vous souhaitez uniquement cibler un menu spécifique, un filtre dynamique existe:

wp_nav_menu_{$menu->slug}_items

Geert
la source
as - complètement oublié cette méthode ... merci.
v3nt
3
Vous pouvez cocher $argspour n'ajouter la recherche qu'à un emplacement de thème (menu) particulier.
Stephen Harris