【WordPress】wp_nav_menuでliタグとaタグにクラスを追加する方法

  • URLをコピーしました!

WordPressを使っていると、ナビゲーションメニューのカスタマイズがどうしても必要になります。特に、wp_nav_menuを使ってメニューの<li><a>タグに独自のクラスを追加する方法は、多くの方にとって難しい課題です。
自作テーマでメニューの見た目を改善したいけれど、どこから手をつけていいかわからない。そんな悩みを抱えていませんか?

この記事では、WordPressのナビゲーションメニューを自在にカスタマイズする方法を、初心者でも理解しやすい形で解説します。
具体的なPHPコードの書き方から、フィルターフックの活用方法まで、ステップバイステップでご紹介。子テーマを使用した安全なカスタマイズ方法も取り上げます。

この記事を読むことで、あなたは自作テーマのナビゲーションメニューを効果的にカスタマイズできるようになります。
wp_nav_menu<li><a>タグに独自のクラスを追加し、サイトのデザインを一層引き立てる方法をマスターしましょう。

目次

wp_nav_menuの基本

WordPressでは、wp_nav_menu関数を使用してウェブサイトのナビゲーションメニューを表示します。
この関数は、WordPressの管理画面で設定したメニューをテーマの任意の場所に簡単に挿入できる強力なツールです。
基本的には、テーマのPHPファイル内にwp_nav_menu()と記述するだけで、設定したメニューがウェブページ上に表示されます。

自作テーマでの実装例

自作テーマにwp_nav_menuを組み込む場合、通常はヘッダー部分のテンプレートファイル(例えばheader.php)にコードを挿入します。
ここで、theme_locationパラメータを使用して、WordPress管理画面で設定したメニューの位置を指定します。
これにより、テーマの特定の部分にメニューが表示されるようになります。

ハンバーガーメニューの作り方はこちらの記事で解説しています。

カスタムクラスの追加の準備

functions.phpの編集

WordPressテーマのカスタマイズにおいて、functions.phpファイルは中心的な役割を果たします。
このファイルを編集することで、テーマの機能を拡張したり、カスタムコードを追加したりできます。
wp_nav_menu<li><a>タグに独自クラスを追加するためには、このファイルに特定の関数を追加する必要があります。

子テーマの利用の重要性

カスタマイズを行う際は、子テーマを使用することが推奨されます。
子テーマを使用すると、元のテーマ(親テーマ)のアップデートによってカスタマイズが上書きされるリスクを避けることができます。
子テーマ内のfunctions.phpファイルにカスタムコードを追加することで、安全かつ効果的にテーマをカスタマイズできます。

PHPコードの構造

functions.phpに追加するコードは、WordPressのフィルターフックを利用します。
これにより、wp_nav_menuの出力を変更して、<li><a>タグに独自のクラスを追加できます。
このプロセスは、WordPressの標準的な機能を拡張する一例であり、テーマのカスタマイズにおいて非常に一般的な方法です。

<li><a>タグにカスタムクラスを追加

wp_nav_menuのカスタマイズ方法

wp_nav_menu関数の出力をカスタマイズするためには、特定のフィルターフックを使用します。


これにより、メニューの各項目(<li>タグ)とリンク(<a>タグ)に独自のクラスを追加できます。
このカスタマイズは、サイトのデザインに合わせてメニューのスタイルを調整する際に特に有効です。

// wp_nav_menuの<li>にクラスを追加する関数
function add_class_on_li($classes, $item, $args) {
  if (isset($args->li_class)) {
    $classes[] = $args->li_class;
  }
  return $classes;
}
add_filter('nav_menu_css_class', 'add_class_on_li', 1, 3);

// wp_nav_menuの<a>にクラスを追加する関数
function add_class_on_a($atts, $item, $args) {
  if (isset($args->a_class)) {
    $atts['class'] = $args->a_class;
  }
  return $atts;
}
add_filter('nav_menu_link_attributes', 'add_class_on_a', 1, 3);

add_class_on_liadd_class_on_a関数の解説

functions.phpファイルに追加するadd_class_on_li関数は、<li>タグにクラスを追加するためのものです。
同様に、add_class_on_a関数は<a>タグにクラスを追加します。
これらの関数は、wp_nav_menuの出力にフックして動作し、指定されたクラスを適切なタグに追加します。

wp_nav_menu関数のカスタマイズ例

具体的な使用例として、以下のようなコードがwp_nav_menu関数の呼び出しに使用されます。

wp_nav_menu(array(
  'theme_location' => 'header-nav',
  'container' => '',
  'menu_class' => 'l-header-nav__menu',
  'li_class' => 'l-header-nav__item',
  'a_class' => 'l-header-nav__link',
));

このコードでは、li_classa_classという新しい引数をwp_nav_menu関数に追加しています。
これにより、指定されたクラスがメニューの<li><a>タグに適用され、サイトのナビゲーションメニューの見た目と機能が向上します。

まとめ

この記事を通じて、WordPressのwp_nav_menu関数を用いてナビゲーションメニューの<li><a>タグに独自のクラスを追加する方法を学びました。
このようなカスタマイズは、ウェブサイトの外観とユーザーエクスペリエンスを向上させるために非常に重要です。

  • カスタマイズの重要性: 独自のクラスを追加することで、ナビゲーションメニューのスタイルを自由に調整し、サイトの全体的なデザインに合わせることができます。これにより、訪問者にとってより魅力的で使いやすいナビゲーションを提供できます。
  • 自作テーマでの利点: 自作テーマでは、このようなカスタマイズを通じて、テーマの機能と外観を完全にコントロールできます。wp_nav_menuのカスタマイズは、テーマの柔軟性を示す素晴らしい例です。

このガイドが、WordPressテーマのカスタマイズに関心を持つ初心者から中級者の開発者にとって有用な情報源となることを願っています。
自作テーマでのナビゲーションメニューのカスタマイズは、創造性と技術的なスキルを組み合わせる素晴らしい機会です。

Web制作に使えるおすすめの書籍

私が実際に購入して役に立った書籍を紹介します。
気になる本があればぜひ読んでみてください!

  • URLをコピーしました!
目次