【WordPress】グローバルナビに条件付きでカスタムクラスを追加する方法

Sponsored Link

いつかしようと思いながら放置したままにしていたグローバルナビゲーションのハイライト表示に手を付けてみました。

img_wordpress

これまでブログ関連のカテゴリーページやタグページなどを開いても、グローバルナビの「ブログ」にハイライトが当たっていませんでした。

例えばこのように。これではサイト構造上おかしいですね。

グローバルナビのハイライトNG

これはブログ一覧ページを固定ページにしているためにcurrent_page_parentクラスやcurrent_page_ancestorクラスでは対応できていないためです。

そこでハイライト表示を完成させるために、wp_nav_menuに条件付きで新しいクラスを追加します。

グローバルナビに条件付きでカスタムクラスを追加する

1.function.phpに次の関数を追加します。

function hub_current_nav($css, $item) {
  if ($item->title == 'ブログ') {
    if(is_single() || is_archive()) {
      $css[] = 'current-page-ancestor';
    }
  }
  return $css;
}

やっていることは簡単で「is_single()」「is_archive()」と2つの条件分岐タグを使って「wp_nav_menu」のタイトルが「ブログ」の項目にcurrent-page-ancestorクラスを追加しています。

2.header.phpに次のフィルターフックを追加します。

<?php
  add_filter('nav_menu_css_class', 'hub_current_nav', 10, 2);
  wp_nav_menu(array(
    'container' => 'ul',
    'menu_class' => 'nav navbar-nav',
    'theme_location' => 'place_pc_global',
    'depth' => 3,
  ));
  remove_filter('nav_menu_css_class', 'hub_current_nav');
?>

nav_menu_css_classフックポイントにadd_filterでさきほど「function.php」に追加したhub_current_navを登録します。これは一度限りの処理なので、remove_filterでフックの登録解除忘れずに。

グローバルナビのハイライト表示が完成

グローバルナビのハイライトOK

うまくいきました。フィルターフックって本当に便利。

関連記事

福岡のウェブデザイン事務所「ハブワークス」

HP作成・リニューアルは福岡のハブワークスまでお気軽にお問い合わせください。ウェブサイト公開後の修正・更新もお任せください。フリーランスだからできるリーズナブルな料金設定でサービスをご提供いたします。