web-dev-qa-db-ja.com

メニューウォーカーを使用して、メニュー項目の最後にカスタム項目を追加する

リストアイテムのメニューの最後に検索フィールドを追加する必要があります。

私はウォーカーを見てきましたが、最後の項目が何であるか(または合計を取得することさえ)把握するのは本当に難しいと思っています。また、カスタムアイテムのコードを追加する場所もあります。

私は現在持っています。

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

この場合はウォーカーは必要ありません。 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

16
Geert