ナビゲーションメニュー投稿記事一覧
日別の投稿記事一覧
メニューの表示は、register_nav_menu()を使う
結論から言えば、「add_theme_support( ‘menus’ );」は必要ないという話。
そうじゃなくて、「register_nav_menu()」を使いなさいということ。
この際、複数のメニューを設定するのだと、「register_nav_menus()」となる…のだが、白状すると私、これができなかった(汗)。
一応書いておくと、
register_nav_menus( array( 'menu-a' => 'メニューA', 'menu-b' => 'メニューB', ) );
と、すこぶる簡単なことなのですが……なぜかこれがエラーになるので、よくわからないまま次のようにfunctions.phpに書き込んだら正常に表示されました。
=functions.php= function new_setup_theme() { register_nav_menu('main-nav', 'メインナビゲーション'); register_nav_menu('side-nav', 'サイドナビゲーション'); } add_action('after_setup_theme', 'new_setup_theme');
=nav.php= <nav id="mainNav"> <div> <?php wp_nav_menu( array( 'theme_location' => 'main-nav' )); ?> </div> </nav>
メニューとウィジェットを表示させる
メニューとウィジェットって、混同しやすいのは私だけ?
冷静に考えれば全然別物だけど、それらをサイト表示させる時のコードを比較の意味でこの1ページに書いておこうと思う。
ファイルは、home.phpとかfront-page.phpとかtop.phpとかindex.phpになると思いますが、その時それぞれで。
=メニューの場合(下はサイドバー表示の場合)= <aside class="sidebar"> <?php register_nav_menu( 'side-nav', 'サイドナビゲーション', ); ?> <?php wp_nav_menu( array( 'theme_location' => 'side-nav' ) ); ?> </aside>
=ウィジェットの場合= <div class="sidebar"> <?php if (is_active_sidebar('sidebarのID')) : dynamic_sidebar('sidebarのID'); else : ?> <div class="widget"> <h2>No Widget</h2> <p>ウィジットは設定されていません。</p> </div> <?php endif; ?> </div>
これを混同して、ウィジェット表記の場所にメニュー表記をしてしまい、メニュー以外のウィジェットが表記されず「????」ってなっていたのであった。