web-dev-qa-db-fra.com

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

J'ai besoin d'ajouter un champ de recherche à la fin d'un menu dans un élément de la liste.

Je me suis intéressé aux marcheurs, mais je trouve vraiment difficile de savoir quel est le dernier article (ou même le total). Également, où devrais-je ajouter le code pour 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>
    }
}
9
v3nt

Vous n'avez pas besoin d'un déambulateur dans ce cas. Un filtre appelé wp_nav_menu_items est disponible. Il vous permet d’éditer les éléments de la liste d’un menu. Il suffit d'ajouter votre propre élément de liste avec un 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

16
Geert