С помощью обходчика меню добавьте пользовательский элемент в конце пунктов меню

10

Мне нужно добавить поле поиска в конце меню в элемент списка.

Я смотрел на пешеходов, но мне было очень трудно понять, что является последним предметом (или даже получить общее количество). Также, где бы я добавил код для пользовательского элемента.

Я в настоящее время получил;

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
источник

Ответы:

19

Вам не нужен ходок в этом случае. Фильтр называется wp_nav_menu_itemsдоступен. Позволяет редактировать пункты списка меню. Просто добавьте свой элемент списка в поле поиска.

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

Примечание: если вы хотите настроить таргетинг только на определенное меню, существует динамический фильтр:

wp_nav_menu_{$menu->slug}_items

Герт
источник
туз - полностью забыл об этом методе ... спасибо.
v3nt
3
Вы можете установить флажок, $argsчтобы добавить поиск только в определенную тему (меню).
Стивен Харрис