Using a menu walker add a custom item at the end of the menu’s items

I need to add a search field at the end of a menu in a list item.

I’ve been looking at walkers but finding it really hard to figure out what is the last item (or even get the total). Also where would i add the code for the custom item.

Read More

I’ve currently got;

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

Related posts

Leave a Reply

1 comment

  1. You don’t need a walker in this case. A filter called wp_nav_menu_items is available. It allows you to edit the list items of a menu. Just append your own list item with search field.

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

    Note: if you only want to target a specific menu, a dynamic filter exists:

    wp_nav_menu_{$menu->slug}_items