WordPressカスタムメニューの<div>を消す

2020.05.26 2020.05.27wordpressカスタマイズ
WordPressカスタムメニューの<div>を消す

WordPressのカスタムメニューを

functions.phpに

function menu_setup() {
register_nav_menus( array(
'global' => 'グローバルメニュー',
'side' => 'サイドメニュー',
'footer' => 'フッターメニュー',
) );
}
add_action( 'after_setup_theme', 'menu_setup' );


と記載すると、WordPressの管理画面の外観>メニュー
でメニューを作成できるようになるのですが

通常の呼び出し呪文※1
<?php wp_nav_menu( array ( ‘theme_location’ => ‘メニュー名‘ ) ); ?>
を表示したいphpファイルに記述すると

<div class="menu-menu-container">
<ul id="menu-menu" class="menu">
<li id="menu-item-数字" class="なんかいっぱい"></li>
</ul>
</div>

と吐き出されてしまうのです。
これを
<nav><ul><li>
にしたいわけで

通常の呼び出し呪文※1ではなく

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

を表示したいphpファイルに記述し呪いをかけ表示させる。
これだけでは<ul>や<li>にidやclassが付加されてしまうため
functions.phpに以下追加するとOK

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')) : '';
}

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です