【WP】ワードプレスのカスタムメニューのカスタマイズ

wordpress-nav-menus-customization

先日ご紹介をしたWordPressのカスタムメニューの機能。出力されるタグをみるとクラス名が多く記述されているのがわかります。記述されているクラス名を使いCSSでメニューのデザイン、表示など変更する事も可能ですが、クラス名が多すぎて煩雑になりやすいので、今回はよりカスタマイズしやすい様に標準のクラス名を独自のクラス名に置き換える方法をご紹介します。

標準的なカスタムメニューの出力例

// 標準的なカスタムメニューの出力例
<ul id="menu-menu" class="nav-menu">
<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-ancestor current-menu-parent menu-item-has-children menu-item-326" id="menu-item-326"></li>
</ul>

LI要素のクラス名を整理する

フィルターフックadd_filter()を使用する事で、カスタムメニューの出力タグに変更を加えることができます。

最初に、標準のクラス名を無くして、自分で指定したクラス名のみをLI要素に反映する方法です。以下のコードを「functions.php」内に記述します。

// (1)LI要素に共通のクラス名を指定する
add_filter('nav_menu_css_class' , 'my_nav_class' , 10 , 1);
function my_nav_class($classes){
  $classes = array(); // クラス名を初期化
  $classes[] = 'my_class'; // 出力するクラス名を設定
  return $classes;
}

wp_nav_menu()によって出力されるタグをみるとクラス名に「my_class」のみが反映されているのがわかります。

// (1)LI要素に共通のクラス名を指定する処理後の出力タグ
<ul id="menu-menu" class="nav-menu">
<li class="my_class" id="menu-item-326"></li>
</ul>

すべてのLI要素に共通するクラス名の場合は以上の処理で対応することができます。

次にLI要素ごとクラス名を変えたい場合はどのようにすればよいのか。実はWordPressの管理画面内でカスタムメニューを設定するときに、LI要素には独自にクラス名をつけることができるようになっています。

まずは、下の図のように各メニューの項目内にある「CSS class」にクラス名を入力します。

wordpress-nav-menus-customization-01

※ メニュー内容の設定欄に「CSS class (オプション)」の表示が無い場合は、ページ上にある「表示オプション」を開き「CSS クラス」にチェックが入っているか確認をしてみてください。

フィルターフックadd_filter()によって処理をしないままだと、上記で入力したクラス名は「menu-item」などの標準のクラス名と一緒に出力されます。そこで、不要なクラス名を無くすための処理として以下のコードを「functions.php」内に記述します。

以下のコードでは、使用するクラス名のみが反映される処理になっています。

「array(‘current-menu-item’,’my_class01′,’my_class02′)」の部分が、使用したいクラス名を指定している箇所になります。

// (2)LI要素に任意のクラス名を指定する
add_filter('nav_menu_css_class', 'my_css_attributes_filter', 10, 1);
function my_css_attributes_filter($var) {
    return is_array($var) ? array_intersect($var, array('current-menu-item','my_class01','my_class02')) : '';
}

wp_nav_menu()によって出力されるタグをみると管理画面で設定されたクラス名が反映されるようになっています。

// (2)LI要素に任意のクラス名を指定する処理後の出力タグ
<ul id="menu-menu" class="nav-menu">
<li class="current-menu-item my_class01" id="menu-item-326"></li>
<li class="my_class02" id="menu-item-326"></li>
</ul>

以上が、カスタムメニューのクラス名を置き換える方法の一例になります。出力されるタグはフィルターフックadd_filter()を使用する事で変更が可能です。上記で紹介した例以外でも独自の処理を加えて出力するタグを変更することができますので、目的に応じて試してみてください。

関連記事

【WP】WordPressの本文抜粋・本文の一部を取得する

WordPressで投稿された記事の本文の一部「抜粋」を取得するために、テンプレートタグthe_excerpt()とget_the_excerpt()があります。the_excerpt()とget_the_excerpt()は、投稿時に抜粋欄へ入力があればその内容が表示され、抜粋...続きを読む

2018.12.04HTMLコーディングWordPress

Micro hair saron様WEBサイトのデザイン提案

Micro hair saron様WEBサイトのデザイン提案。店内のインテリアやお店の雰囲気、「シンプル」でありながら心地よさを感じられるようなデザインを心掛けました。お店のコンセプトである「髪だけでなく 時間と空間をデザインして 五感で満足していただくこと。」木の温もりと、...続きを読む

2019.04.24WEBデザイン美容室

【デザイン】ポップでグラフィカルなシングルページデザインのWEBサイトまとめ

WEBサイトのコンテンツ(内容)を1ページに収めて掲載をするシングルページデザイン。コンテンツが多い分、ページは縦に長くなってしまいますが、その長さを生かしてデザインされたポップでグラフィカルなWEBサイトをまとめてみました。 Chilicongraphic デザイン...続きを読む

2015.02.15インスピレーション

魚時会館おさかな亭様WEBサイトの制作

藤枝市にある『魚時会館おさかな亭へ』様のWEBサイトの制作いたしました。魚時会館おさかな亭様は、藤枝駅より徒歩3分。昭和8年創業の老舗魚屋の目利きによる上質な海鮮料理、和食など静岡名物や料理を提供しおります。静岡県藤枝市で宴会・出前・法事・仕出し弁当のことなら魚時会館おさかな...続きを読む

2018.09.04WEBサイト制作

【デザイン】シングルページデザイン海外のクリエイティブWEBサイトまとめ

シングルページデザインは、1ページ内に「お知らせ」「コンセプト」「サービス紹介」「会社概要」「お問い合わせ」などのサイトを構成する一般的な情報をすべて集約したデザインです。従来サイトで、訪問者がページを見て必要な情報が無いと判断して離脱してしまうことを防ぐことから設計されたデ...続きを読む

2015.02.16インスピレーション