PC画面でもモバイルのスライドインメニューを表示する方法

Cocoonカスタマイズ集
この記事は約3分で読めます。
記事内に広告が含まれています。

はじめに

以下を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メニューとモバイルメニューを統一させることで、ユーザーが快適にナビゲーションできる環境を提供できるでしょう。

タイトルとURLをコピーしました