※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

Max Mega Menu プラグイン (設定が反映されなかったけど解決)

概要

本サイトのグローバルメニューにメガメニューを使ってみかったので、Max Mega Menu プラグインを利用してみました。
当初、一部の設定がどうしても反映されず悩みましたので、情報残しておきます。

Max Mega Menu

ここでは、メガメニューとは、通常のドロップダウンメニューよりも広い領域で表示されるメニューをさすことにします。

Max Mega Menu プラグインは、WordPress でメガメニューを使うためのプラグインの1つです。

公式サイト
https://www.megamenu.com/


公式サイトのトップページで [Try the demo!] の部分をマウスオーバー(マウスホバー) すると メガメニューの例が確認できます。

インストール方法

WordPress の管理画面 – [プラグイン] – [新規プラグインを追加] – [プラグインの検索] で Max Mega Menu と入力し、
表示されたプラグインの中から [Max Mega Menu] の [今すぐインストール] をクリックするとインストールできます。
インストール後に、[有効化] をクリックします。


有効化後に WordPress の管理画面 の左側の [メガメニュー] が表示されます。これをクリックすると Max Mega Menu の設定になります。
本稿更新時点の Max Mega Menu 3.3.1 だと、WorkdPress の管理画面を日本語化していると Max Mega Menu の設定画面も一部日本語化されて表示されました。

設定項目

設定画面の様子と各項目は以下です。(各 設定項目名や概要は、実際の画面から引用)

WordPress の管理画面 の左側の [メガメニュー] から

メニューの位置

ヘッダーナビ(グローバルナビ) と ヘッダー上の帯メニュー、フッターナビ に対して、それぞれ有効にするかどうかとテーマなどを選択できます。

一般設定

設定項目概要
有効このメニューの位置で Max Mega Menu を有効化しますか ?
イベントサブメニューをトリガーするイベントを選択
エフェクトサブメニューのアニメーションタイプを選択
エフェクト (モバイル)モバイルメニューのスタイルを選択してください
テーマメニューに適用するテーマを選択

高度

設定項目概要
クリックイベント動作イベントが「クリック」に設定された場合の動作を定義。モバイル時も適用されます。
モバイルサブメニューの動作モバイルメニューのサブメニュートグルの動作を定義
モバイルサブメニューのデフォルト状態モバイル メニューが表示されているときのサブメニューのデフォルト状態を定義。
メニュー項目の説明メニュー項目の説明の表示を有効化します。
JavaScript のイベントを解除テーマのメニューシステムとの競合を避けるため、メニュー項目に追加された JavaScript イベントはデフォルトで削除されます。
メニュー項目のクラス接頭辞カスタムメニュー項目のクラスに接頭辞として「mega-」を付けますか ?
コンテナメニューラッパーの要素として nav または div 使用しますか ?
アクティブなメニューのインスタンス一部のテーマでは、同じページに複数回メニュー位置が出力されることがあります。たとえば、メインメニューで1回出力され、モバイルメニューでもう1回出力されることがあります。こちらの設定は、Max Mega Menu がそれらのインスタンスのうちの1つにのみ適用されるようにするために使えます。

オプションを表示

設定項目概要
ブロック (Gutenberg)このメニューの位置をブロックがサポートされている領域に表示。
PHP 関数このメニューの位置をテーマテンプレート (通常は header.php) に表示。
ショートコードこのメニューの位置を投稿またはページに表示。
ウィジェットこのメニューの位置をウィジェット領域に表示。

メニューのテーマ

Max Mega Menu 3.3.1 だと、無料版でも、上部の [編集するテーマを選択] 右の 三点ドットのボタンからテーマを追加することができました。

一般設定

設定項目概要
テーマタイトルテーマのタイトル
矢印矢印のスタイルを選択します。
行の高さサブメニューのコンテンツで使用する一般的な行の高さを設定します。
Z-Indexz-index を設定して、サブメニューが他のコンテンツの上に表示されるようにします。
メガメニューとフライアウトメニューに影を適用します。
Keyboard Highlight OutlineSet the outline style for menu items when they recieve focus using keyboard navigation.
ホバー遷移メニュー項目にホバー時のトランジションを適用します。注意: トランジションはグラデーション背景には適用されません。
ウィジェットのスタイリングをリセット注意: メガメニュー内のウィジェットのスタイルをリセットしますか ? これにより、サブメニューに追加したウィジェットのスタイルが崩れる可能性があります。デフォルト: 無効。

メニューバー

設定項目概要
メニューの高さ各トップレベルメニュー項目の高さを定義します。この値にコンテナの上下のパディング値を加えた値は、メニューバー全体の高さを定義します。
メニューの背景メインメニューバーの背景色。「ボタン」スタイルメニューの各値を透明に設定します。
メニューのパディングメインメニューバーのパディング。
メニューボーダー半径メインメニューバーで枠線の角丸を設定します。
トップレベルのメニュー項目
メニュー項目の整列すべてのメニュー項目を左 (デフォルト)、中央または右に揃えます。
項目のフォント各トップレベルメニュー項目に使用するフォント。
項目のフォント (ホバー)各トップレベルのメニュー項目 (ホバー時) に使用するフォントを設定します。
アイテムの背景各トップレベルメニュー項目の背景色。ヒント: すでにメニューバーに背景色を設定している場合は、これらの値を透明に設定してください。
項目の背景 (マウスオーバー)トップレベルメニュー項目の背景色 (ホバー)
項目の間隔各トップレベルメニュー項目の間のギャップのサイズを定義します。
項目の余白各トップレベルのメニュー項目の余白を設定します。
項目の枠線各トップレベルのメニュー項目に表示する枠線を設定します。
項目の枠線の角丸トップレベルの各メニュー項目の角丸を設定します。
項目区切り各メニュー項目の間に小さな区切りバーを表示。
現在の項目をハイライト「hover」スタイルをメニュー項目に適用してください。トップレベルのメニュー項目のみに適用されます。

メガメニュー
後述の [外観] – [メニュー] で [Mega Menu – グリッドレイアウト] か [Mega Menu – 標準のレイアウト] を選択したメニューに対して有効になる設定かと思います。

設定項目概要
パネルの背景サブメニュー全体の背景色を設定します。
パネルの幅メガパネルの幅。
パネルの余白サブメニュー全体の余白を設定してください。サブメニューのコンテンツを端から端まで表示したい場合は、これらの値を 0 px に設定します。
パネルのボーダーサブメニューに表示する枠線を設定します。
パネル枠線の角丸サブメニューの角丸を設定します。
カラム余白こちらを使用して、サブメニュー内の各ウィジェット / メニュー項目セットの周囲のスペースを定義します。
ウィジェット
タイトルフォントメガメニューのウィジェットヘッダーに使用するフォントを設定してください。ヒント: スタイルを一貫させるため、第2レベルのメニュー項目のフォントと同じスタイルに設定してください。
タイトル余白ウィジェット見出しの余白設定します。
タイトルマージンウィジェット見出しのマージンを設定します。
タイトル枠線ウィジェット見出しの境界線を設定します。
コンテンツのフォントパネルのコンテンツに使用するフォントを設定します。
第2レベルのメニュー項目
項目のフォントMega Menu に表示される第2レベルのメニュー項目のフォントを設定します。
項目のフォント (ホバー)ホバー時のフォントスタイルを設定します。
項目の背景 (マウスオーバー)第2レベルのメニュー項目の背景のホバー色を設定します。
項目の余白第2レベルのメニュー項目の余白を設定します。
項目マージン第2レベルのメニュー項目のマージンを設定します。
項目の枠線第2レベルのメニュー項目の枠線を設定します。
第3レベルのメニュー項目
項目のフォントMega Menu に表示される第3レベルのメニュー項目のフォントを設定します。
項目のフォント (ホバー)ホバー時のフォントスタイルを設定します。
項目の背景 (マウスオーバー)第3レベルのメニュー項目の背景のホバー色を設定します。
項目の余白第3レベルのメニュー項目の余白を設定します。
項目マージン第3レベルのメニュー項目にマージンを設定します。
項目の枠線第3レベルのメニュー項目に枠線を設定します。

フライアウトメニュー
後述の [外観] – [メニュー] で [フライアウトメニュー] を選択したメニューに対して有効になる設定になると思います。

設定項目概要
サブメニューの背景フライアウトメニュー背景色を設定します。
サブメニューの幅各フライアウトメニューの幅。固定のピクセル値である必要があります。
サブメニューの余白フライアウトメニュー全体の余白を設定します。
サブメニューの枠線フライアウトメニューの枠線を設定します。
サブメニューの枠線の角丸フライアウトメニューの角丸を設定します。角丸はすべてのフライアウトメニューレベルに適用されます。
メニューアイテムの背景フライアウトメニュー項目の背景色を設定します。
メニューアイテムの背景 (ホバー)フライアウトメニュー項目の背景色を設定します (ホバー時)。
メニューアイテムの高さ各フライアウトメニュー項目の高さ。
メニュー項目の余白各フライアウトメニュー項目の余白を設定します。
メニュー項目のフォントフライアウトメニューの項目のフォントを設定します。
メニュー項目のフォント (マウスオーバー)フライアウトメニューの項目のフォントを設定します。
メニュー項目の区切り各メニュー項目の下に線の区切り線を表示。

モバイルメニュー

設定項目概要
レスポンシブ ブレークポイントブラウザの幅がこの値以下になると、メニューはモバイルメニューに切り替わります。
メニュートグルバー
トグルバーのデザイナートグルバーのコンテンツを設定
トグルバーの背景モバイルメニュートグルバーの背景色を設定します。
トグルバーの高さモバイルメニュートグルバーの高さを設定します。
トグルバーの枠線の角丸モバイルトグルバーに枠線の角丸を設定します。
モバイルトグルバーを無効化トグルバーを非表示にし、メニューをデフォルトで展開された状態で表示
モバイルサブメニュー
オーバーレイコンテンツ有効にした場合、モバイルのサブメニューはページコンテンツの上にオーバーレイ表示されます (ページコンテンツを下に押し下げるのではなく)
全幅を強制有効化すると、モバイルサブメニューは指定されたページ要素の幅と位置に合わせられます (トグルバーの幅に制限されるのではなく) 。全幅のサブメニューを表示する場合は、「Selector」の値を「body」に設定のままにしてください。
サブメニューの幅モバイルエフェクトが「左にスライド」または「右にスライド」に設定されている場合のサブメニューの幅。px単位で指定する必要があります。
メニューアイテムの高さモバイルメニューの各トップレベル項目の高さ。
メニューのパディングモバイルサブメニューの余白。
メニューの背景モバイルメニューの背景色。
メニュー項目の背景 (アクティブ)サブメニューが開いているときのモバイルメニューの各トップレベルメニュー項目の背景色。
フォントモバイルメニューの各トップレベルメニュー項目に使用するフォント。
フォント (アクティブ)モバイルメニューでサブメニューが開いている場合の各トップレベルメニュー項目の文字色。
メガメニュー
メガメニューの列モバイルでは、メガ メニュー コンテンツをこの多数の列に折りたたむことができます。

カスタムスタイル

設定項目概要
CSS エディターこのテーマでメニューに追加するカスタム CSS を定義してください。標準の CSS または SCSS が使えます。

一般設定

一般設定

設定項目概要
CSS 出力CSS は wp-content/uploads/maxmegamenu/style.css に保存され、エンキューされます。

ツール

ツール

設定項目概要
キャッシュメニューの CSS は、メニューまたはメニューのテーマが変更されるたびに更新されます。このツールを使用すると、メニュー CSS を強制的に更新できます。
プラグインデータデータベースから Max Mega Menu プラグインのすべての保存データを削除します。注意のうえご利用ください !

WordPress の管理画面 の左側の [外観] – [メニュー] から

メニュー構造自体は、Max Mega Menu を入れていない場合と同様に設定します。
そのあと、Max Mega Menu を有効にしたいメニューに対して、メニューツリーの各アイテムの上をマウスを置くと、[メガメニュー] のボタンが表示されるので、クリックして設定を行います。
この設定を行うことで、メガメニューの見た目になるので、上述の [メガメニュー] の設定だけでなくこちらも忘れずに。

サブメニューを [フライアウトメニュー] に設定すると、ドロップダウンメニューからフライアウトする形式になります。(従来のドロップダウンメニューに近いです。)
デフォルトでこれが選択されています。
メガメニューにしたい場合は [Mega Menu – グリッドレイアウト] か [Mega Menu – 標準のレイアウト] を選択する形となります。

設定後は、このポップアップ自体は×ボタンで閉じて、[メニュー構造] の一番下に表示されている [メニューを保存] で反映されます。

上記で設定した内容 [Mega Menu – 標準のレイアウト] でのサンプルは以下です。

実際に設定を試みたが反映されない → WAF の影響だった

私の場合は、WordPress の管理画面 の左側の [メガメニュー] – [メニューの位置] に [変更の保存] ボタンや、[外観] – [メニュー] での保存ボタンは有効に働いたのですが、
[メガメニュー] – [メニューのテーマ] の [変更の保存] を押しても内容が反映されない状況になりました。
すなわち、メガメニューを有効にする操作や 新しいテーマを作成すること自体はできたのですが、テーマをカスタマイズしたあと [変更の保存] を押しても反映されない状況でした。

実際にクリックした際の様子は以下のような感じです。
[変更を保存] をクリックした直後に一瞬切り替わるのですが SAVED とは表示されません。別の画面に切り替えて戻ると変更前に戻っています。

切り分けのために Local 環境で試してみたところ、Local では問題なくテーマの変更も反映されました。
すぐみてわかる違いとしては、[設定の保存] をクリックした後は、SAVED と右に表示されるのが本来の形のようです。


最初はブラウザのキャッシュの影響を疑い、
F12 キーを入力し ブラウザの開発ツールを表示 – Shift を押しながら ブラウザの更新ボタンを長押し – [キャッシュの消去とハード再読み込み]
をやってみましたが、効果はありませんでした。

次に、 もう一度 F12 キーで開発ツールを表示させて、[変更の保存] をクリックしたときのコンソールの出力を確認しました。
開発ツール内で、[Console] を表示されているのを確認してから、Mega Max Menu のメニューのテーマの [設定の保存] ボタンをクリックします。①

赤くエラーが表示されました。②
エラーのところクリックすると [Network] タブに遷移します。


ここで Status コードは 403 とわかりますが、その行をクリックするともう少し詳細が確認できます。

Request URL: https://サイトのFQDN/WordPress管理フォルダ/admin-ajax.php
Request Method: POST
Status Code: 403 Forbidden
Remote Address: aaa.bbb.ccc.ddd :443
Referrer Policy: strict-origin-when-cross-origin

簡単に言えば、admin-ajax.php に POST のリクエストを行ったら 403 Forbidden が返ってきた形です。(言葉が足りないかもしれませんがご容赦ください。)

さらに続いて、admin-ajax.php と 403 で検索すると、海外などのIPアドレスからの接続を制限している であったり、サーバ側のセキュリティに依存する などの情報が目に止まりました。

画像ではマスクしていますが、上記の Remote Address は conoha.ne.jp の www サーバを示していますので、IPアドレスの制限の可能性は後回しにします。


このサイトは ConoHa WING のサーバを利用していますので、サーバ側のセキュリティ設定を確認のため ConoHa のコントロールパネルに接続します。

ConoHa コントロールパネル – 上部 [WING] タブ – [サイト管理] – [サイトセキュリティ] – [WAF] タブ

WAF の設定はデフォルトでは ON でした。
下に表示されているログを見ると、私が [変更を保存] をクリックしたタイミングで、以下の記録が行われていることが確認できました。

攻撃ターゲットURL : http://サイトのFQDN/WordPress管理フォルダ/admin-ajax.php
攻撃元IPアドレス : 作業していたのPCのIPアドレス
攻撃内容 : SQLインジェクションからの防御55(/* */)

試しに、この WAF を OFF にすると設定が保存できることがわかりました。

ということで、少なくとも私が利用している環境では、WAF を無効にしないと Max Mega Menu の一部の設定ができないことがわかりました。
個人的には、設定を反映させるタイミングだけ WAF を OFF にして、設定後は ON に戻すという方法でやっていこうかと思います。
(WAF の除外設定も可能です。)

参考

WAF とは、Web Application Firewall の略で、Webアプリケーションの脆弱性を悪用した攻撃からWebサイトを保護するセキュリティ対策 になります。
ConoHa WING のサポートページの情報は以下にあります。
https://support.conoha.jp/w/waf/?btn_id=wing-website–sidebar_w-waf

参考となれば幸いです。