カスタムメニューをグローバルメニューとしてCSSカスタマイズ
WordPressだからって「カスタムメニュー」「ウィジェット」「アイキャッチ」を絶対に使わなければならないという法はない。
しかしながら、結局、これを使わないならWPにする意味もないんだよなぁと、場数をふむほどに痛感する今日この頃でございます。
そうでなくても、手間のかかるパーツ「グローバルメニュー」
ここをプルダウンにしようとすると、検索してもアナログ手法の記事ばかりヒットします。
さらにハンバーガーにまでしようものなら、膨大な行数のHTMLを書かなければなりません。
カスタムメニューなら1行で済むんですよ。
カスタムメニューにしましょうよ。
というわけで、カスタムメニューをグローバルメニューとして使用し、CSSでカスタマイズするまでのステップを整理しました。
1. function.php に記述
まず、カスタムメニューを有効にします。
register_nav_menus( array( 'header_nav' => 'ヘッダーナビ', 'footer_nav' => 'フッターナビ', ) );
2. メニューを作成
次に、外観~メニューで、メニューを作成。
メニュー名は英数字がいいです。日本語にするとパーマリンク同様、暗号が吐き出されます。
「-」とか「_」も無いほうがいいです。吐き出されるコードには前後に「-」でいろいろつくので、紛らわしくてCSSをあてづらくなります。
3. テンプレートに呼び出し
入れたいところに1行記述するだけ。
とはいえ、divで囲むくらいはしておきましょう。
<div id="header-nav"> <?php wp_nav_menu(array('theme_location' => 'header_nav')); ?> </div>
4. SCCをあてるclass
吐き出されるソースはul・li要素になります。
付与されるクラス名も決まっています。
このクラス名にCSSをあてていきます。
・親の ul 要素には「menu」
・子の ul 要素には「sub-menu」
・全ての li 要素には「menu-item」
・現在表示されているページの li 要素には「current-menu-item」
・現在表示されているページの親の li 要素には「current-menu-parent」
・現在表示されているページの最も上の li 要素には「current-menu-ancestor」
5. 参考CSS
とりあえず、参考にしたページのソースを貼り付けておきます。
イイ感じの自分デフォが完成したら差し替えておいて・・・
【参考】wp_nav_menu の出力をドロップダウンメニューで表示
#header-nav { clear: both; } #header-nav ul#menu-nav { height: 30px; } #header-nav ul li.menu-item { position: relative; /*z-indexの指定や子要素の基準とするために指定*/ z-index: 1; /*ドロップダウンしたメニューが隠れないように*/ float: left; /*親メニューは横1列に並べる*/ padding-right: 20px; } #header-nav ul li.menu-item a{ display: block; /*要素の幅いっぱいにするために指定*/ height: 30px; line-height: 30px; color: #666; font-size: 12px; font-size: 1.2rem; text-decoration: none; } /*マウスオーバー時等にメニューの色を変更*/ #header-nav ul li.menu-item a:hover, /*マウスオーバー時*/ #header-nav ul li.current-menu-item a, /*現在表示されているページのメニュー*/ #header-nav ul li.current-menu-parent a, /*現在表示されているページの親のメニュー*/ #header-nav ul li.current-post-ancestor a { color: #000; } #header-nav ul li.menu-item a:hover { background-color: #EEE; /*マウスオーバー時に背景色を変更*/ } #header-nav ul li ul.sub-menu { display: none; /*サブメニューは最初は非表示にしておく*/ position: absolute; /*絶対配置にしておかないとうまくいかない*/ top: 30px; left: 0; border-top: 1px solid #EEE; /*ボーダートップを指定*/ width: 160px; } #header-nav ul li:hover ul.sub-menu { display: block; /*マウスオーバー時にサブメニューを表示する*/ } #header-nav ul li ul.sub-menu li{ float: none; /*サブメニューはフロートさせないので解除*/ padding: 0; /*親メニューのパディングを解除*/ } #header-nav ul li ul.sub-menu li a { border: 1px solid #eee; /*ボーダーの指定*/ border-top: none; /*ボーダートップは重なって太くなるので解除。一番上は ul 要素に指定*/ padding: 0 10px; background-color: #FFF; color: #666; text-align: left; } /*サブメニューで現在表示されているページのリンクの色を変更する*/ #header-nav ul li ul.sub-menu li.current-menu-item a { display: block; background-color: #FBF3FE; }
こうして人間どんどんラクをおぼえてゆくのですね・・・