はじめに
以下をCocoonで実現します。
Cocoonは、SWELLと以下の点で異なります。
- SWELL
ハンバーガーメニューは、PC表示時にCSSで非表示にされています。
そのため、PC表示時にはCSSを使って簡単に表示させることが可能です。
- Cocoon
PCメニューとモバイルメニューが独立しており、PCメニューにモバイルメニュー(スライドインメニューなど)を設定することができません。
そのため、グローバルナビメニューの後ろにモバイル用のスライドインメニューを追加する必要があります。
この記事では、この方法について説明します。
完成イメージ

実装手順
以下の手順で実装します。
- ラベルCocoon設定
グローバルナビメニューの横に追加メニューを表示するには、「トップメニュー」が適切です。
Cocoon設定 設定 大項目 項目 設定値 全体 全体設定 サイドバーの表示状態 全てのページで非表示にする ヘッダー ヘッダー設定 ヘッダーレイアト トップメニュー - ラベルPHPを追加
以下のコードをfunctions.phpに追加します。
add_filter('wp_nav_menu', function ($output, $args) { // メニュー位置「ヘッダーメニュー」以外の場合は処理対象外 if ($args->theme_location != NAV_MENU_HEADER) { return $output; } ob_start(); cocoon_template_part('tmp/mobile-sidebar-button'); $html = ob_get_clean(); $html = str_replace('li', 'div', $html); // メニューの出力末尾にボタンを追加 return $output . $html; }, 10, 2); - ラベルCSSを追加
以下のコードをstyle.cssに追加します。
/* スクロールバー分の余白確保 */ html { scrollbar-gutter: stable; } .navi-in { align-items: center; display: flex; justify-content: center; .sidebar-menu-caption { display: none; } .sidebar-menu-icon span { display: block; &::before { content: '\f0c9'; display: block; font-family: 'Font Awesome 5 Free'; font-weight: bold; } } } .sidebar-menu-content { overflow-x: clip; } @media (max-width: 1023px) { .navi, .navi-menu-content { .sidebar-menu-button { position: absolute; top: -100%; } } }
さいごに
今回紹介した方法を使えば、Cocoonでモバイルのグロナビ(ハンバーガーメニュー)をPC表示でも簡単に実現できます。
PCメニューとモバイルメニューを統一させることで、ユーザーが快適にナビゲーションできる環境を提供できるでしょう。

