通常、ワードプレスのカスタムメニューを出力するときは wp_nav_menu
を使います。
一例を挙げると次のように記述しますね。
<ul> <?php wp_nav_menu ( array('menu'=>'header-navi', 'container'=>false, 'items_wrap'=>'%3$s', 'fallback_cb'=>'') ); ?> </ul>
これで出力されるHTMLは、概ね次のようになります。
<ul> <li id="menu-item-2851" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-2 current_page_item menu-item-2851"> <a href="https://example.com/" aria-current="page">トップページ</a> </li> <li id="menu-item-7886" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7886"> <a href="https://example.com/service">事業一覧</a> </li> <li id="menu-item-7687" class="menu-item menu-item-type-post_type_archive menu-item-object-oz-custom-works menu-item-7687"> <a href="https://example.com/works">事業内容</a> </li> <li id="menu-item-7525" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7525"> <a href="https://example.com/price">料金表</a> </li> <li id="menu-item-2766" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2766"> <a href="https://example.com/profile">会社概要</a> </li> <li id="menu-item-2764" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2764"> <a href="https://example.com/contact">お問い合わせ</a> </li> </ul>
管理画面側で設定したメニューをラクに出力できるので、使い勝手がよく便利なのですが、出力されるHTMLに余分なidやclassなどが付与されていることが気になります。
そこで今回は、これらの不要なコードを削除する方法を紹介します。
[wp_nav_menu]の <ul><li> からidを削除
まずは<li>要素に付与されるid属性を削除する方法です。
function remove_menu_id( $id ){ return $id = array(); } add_filter('nav_menu_item_id', 'remove_menu_id', 10);
[wp_nav_menu]の <ul><li> からclassを削除
続いては、同様に<li>要素に付与されるclass属性を削除する方法です。
function remove_menu_class( $classes ){ return $classes = array(); } add_filter('nav_menu_css_class', 'remove_menu_class', 10, 2);
[wp_nav_menu]の <ul><li><a> からaria-current属性を削除
最後は、リンクの<a>タグに付与されるaria-current属性を削除するコードです。
function remove_menu_aria_current( $atts, $item, $args ){ unset ( $atts['aria-current'] ); return $atts; } add_filter('nav_menu_link_attributes', 'remove_menu_aria_current', 11, 5);
上記のコードをテーマファイルの[functions.php]内に記述します。
結果
紹介したすべてのコードを使うと、出力されるHTMLが見事にスッキリします。
<ul> <li> <a href="https://example.com/">トップページ</a> </li> <li> <a href="https://example.com/service">事業一覧</a> </li> <li> <a href="https://example.com/works">事業内容</a> </li> <li id"> <a href="https://example.com/price">料金表</a> </li> <li> <a href="https://example.com/profile">会社概要</a> </li> <li> <a href="https://example.com/contact">お問い合わせ</a> </li> </ul>
ぜひお試しください。