WooCommerceのマイアカウントページ(マイページ)をスマホで表示したときにサイドメニューを折りたたんで表示する方法

【WooCommerce】マイページのサイドメニューの開閉機能の実装【スマホ対応】

WooCommerceのマイアカウントページ(マイページ)をスマホで表示したときにサイドメニューを折りたたんで表示する方法

目次

はじめに

WooCommerで作るECサイトのマイアカウントページのカスタマイズ方法をご紹介します。
WooCommerce とは、WordPress向けのeコマースプラットフォームです。
簡単にECサイト(ネットショップ・オンラインショップ・通販サイト)を構築し運営することができ、自由度の高いカスタマイズ性があります。

多様なカスタマイズが可能なWooCommerceですが、今回はマイアカウントページのサイドメニューをスマホでは表示・非表示を切り替えられるようにカスタムしていきます。

制作環境と前提条件

今回の制作環境は以下の通りです。

  • WordPressバージョン: 6.7.1
  • WordPressテーマ・バージョン:Storefront Child 4.6.1(Storefrontの子テーマを作成)
  • PHPバージョン: 8.1.29

前提条件は以下の通りです。

  • WordPressをインストールして子テーマを作成済み
  • WooCommerceをダウンロードして初期設定済み
  • 作業前のバックアップを保存済み(※作業中にエラーが起きた際は作業前の状態を復元できるようにしてください。本記事で紹介する作業は自己責任のもと実施してください。)

完成形

マイアカウントページをスマホで表示すると、ページの上部にメニューが配置されます。

WooCommerceのマイアカウントページをスマホ(モバイル)で見ている場合のスクリーンショット

そこで、今回はスマホでページを表示した際にメニューを開閉できるようにボタンを追加します。

WooCommerceのマイアカウントページをスマホ表示した場合に、メニューを折りたたむ
WooCommerceのマイアカウントページをスマホ表示した場合に、メニューを折りたたみ、ボタンが押されたらメニューを表示する

マイページのサイドメニューの開閉機能の実装【スマホ対応】

さて、ここから具体的なカスタマイズ方法をご紹介します。
必ずバックアップを保存してから作業を進めてください。
※自己責任のもと作業を実施してください。

1. スマホ用メニューボタンの作成

functions.phpでメニューの開閉ボタンを追加するショートコードを作成します。
ただし、ユーザーがログインしていない時はメニューが表示されないため、ボタンも表示しないようにする必要があります。
下記コードを参考にしてください。

<?php
// メニューの開閉ボタンを設置する
add_shortcode('button-sp', function() {
    if (is_user_logged_in()) {
        // ボタンのHTMLを表示
        return ' <button id=" btn-sp" class="btn-sp">MENU</button>';
    }
    return ''; // 非ログイン時は何も表示しない
});

作成したショートコードをマイアカウントページの編集画面(ブロックエディタ)で追加します。

[button-sp]

すでにある[woocommerce_my_account]よりも上に追加してください。

あとはCSSでボタンとメニューの表示/非表示を切り替えます。
下記コードを参考にしてください。

/* メニューの開閉ボタン */
.btn-sp {
    display: none;
    margin-left: auto;
    margin-bottom: 24px;
    background-color: rgba(0,0,0,.05);
    border-radius: 2px;
    color: #296197;
}
/* スマホ・タブレット対応 メニューがページ上部に配置された時 */
@media screen and (max-width: 768px) {
    .btn-sp {
        display: block;
    }
    /* メニュー要素に付与されているクラス */
    .woocommerce-MyAccount-navigation {
        display: none;
        margin-bottom: 24px;
    }
}

2. メニューの開閉機能の実装(JavaScript)

メニューの開閉とボタンのテキスト(MENU/CLOSE)を切り替えます。

document.addEventListener("DOMContentLoaded", function () {
// メニュー項目を取得
const wooMyAccountNav = document.querySelector(".woocommerce-MyAccount-navigation");
// ボタンを取得
const btnSp = document.getElementById("btn-sp");

	// ボタンが押されるとメニューの開閉・ボタンのテキストがトグル
    btnSp.addEventListener("click", function (e) {
        if (wooMyAccountNav.style.display === "none" || wooMyAccountNav.style.display === "") {
            wooMyAccountNav.style.display = "block";
            btnSp.textContent = "CLOSE";
        } else {
            wooMyAccountNav.style.display = "none";
            btnSp.textContent = "MENU";
        }
    });
});

ボタンのテキストは自由に変更可能です。

以上でカスタマイズは完了です。

今回はMENU/CLOSEのようなテキストボタンを実装していますが、ハンバーガー/×のトグルボタンにも応用できますので、カスタマイズしてみてください。

WordPress・WooCommerceを活用したホームページ・ECサイトの制作は株式会社クリエ・ココへお気軽にご相談ください。