現時点ではナビゲーションメニューのメニュー項目はheader.php内に直接記述されています。メニュー項目や表示順などをWordPressのメニュー画面で設定できるように変更します。
管理画面のメニュー画面で設定したメニューを表示するwp_nav_menu関数とブートストラップ3のナビゲーションメニューのスタイルを設定するwp-bootstrap-navwalkerを使って設定します。
1)wp-bootstrap-navwalkerを配置
①下記サイトからwp-bootstrap-navwalker.phpを入手します。
twittem/wp-bootstrap-navwalker
②テーマディレクトリ内にコピー
ここでは、incディレクトリ内にコピーします。
③functions.phpでインクルード
functions.php内に下記記述を追加します。
define(‘MYTHEMES_PATH’, get_template_directory() );
require MYTHEMES_PATH . ‘/inc/wp-bootstrap-navwalker.php’;
2)header.phpを修正
メニューのリンク項目が記述されている部分をwp_nav_menu関数に置き換えます。
header.phpのナビゲーションメニュー部を下記のように修正します。
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <?php wp_nav_menu( array('theme_location' => 'primary', 'menu_class' => 'nav navbar-nav', 'container_class' => 'navbar-collapse collapse', 'fallback_cb' => 'wp_bootstrap_navwalker::fallback', 'walker' => new wp_bootstrap_navwalker() ) );?> </div><!-- /.container --> </div><!-- /.navbar -->
3)WordPressの管理画面でメニューを作成し、登録
①「外観」→「メニュー」→「メニューを編集」タブでメニューを作成
“メニュー構造”欄で適宜、階層化したメニューを作成します。
②「位置の管理」タブで”トップメインメニュー”に①で作成したメニューを指定し、保存
4)動作確認
ブラウザで表示し、管理画面で設定したメニュー項目がナビゲーションメニューに表示され、階層構造にしたメニュー項目がドロップダウンで表示される事を確認します。
「ブートストラップ3を使って自作テーマ作成」の目次へ
ずっとドロップダウンの実装が上手く行かず唸っていたので助かりました!
ありがとうございました!