wordpressでカスタムメニューに自動付与される邪魔なclassとdivなどを消す

公開日: 

カスタムメニューは管理画面からページ内リンクを設定できるので非常に便利ですが、そのまま使うと<li>タグに大量の邪魔なクラスがついたり、勝手に<div class=”menu-menu-container”>タグや<ul>にidとclassが生成されてしまいます。

あっても無くてもSEO的問題ないんですが、ソースはスッキリしてた方が何かと有利に働くので、邪魔なものは消しちゃいましょう。

1.functions.phpに<li>タグのクラス削除の命令を入れる

// カスタムメニューliの邪魔なクラスを消す
add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1);
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);
function my_css_attributes_filter($var) {
return is_array($var) ? array_intersect($var, array('current-menu-item')) : '';
}

これを入れておくとclass、idが削除されます。current-menu-itemのクラスは便利なので残す設定です。

2.header.phpの「wp_nav_menu」に記述を加える

<?php wp_nav_menu(); ?>

これを↓に変更

<?php wp_nav_menu( array (
	'items_wrap' => '<ul>%3$s</ul>',
	'container' => false
	) );
?>

items_wrapは<ul>につくクラスとidを無しにする設定なので、既にcssで設定してしまっている場合は面倒なので無しでもいいです。

containerはdivなどで囲まない設定にしてます。falseではなくnavタグなど設定する事もできます。

 

コメント入力欄

主な業務内容

  • ホームページ制作
  • ECサイト構築
  • SEO対策
  • システム構築
  • トレードシステム設計
  • 展示会の企画・設計
  • 日用雑貨の販売
PAGE TOP ↑