私はwp_nav_menuを通してメニューのために以下のマークアップを出力しようとしています、
<ul>
<li><a href="/">Home</a></li>
<li>
<a href="/" aria-haspopup="true">Blog</a>
<ul>
<li><a href="/">Design</a></li>
<li><a href="/">HTML</a></li>
<li><a href="/">CSS</a></li>
<li><a href="/">JavaScript</a></li>
</ul>
</li>
</ul>
メニュー項目にサブメニューがあるかもしれません - その場合、トップレベルリンクは上の例のようにフォーマットされる必要があります。私はコーデックスを調べながらさまざまな解決策を試しましたが、成功しませんでした。たくさんのクエリを追加したいのでなければ、ウォーカーを作成する必要があるようです(メインループ内でサブメニューループを実行する)。しかし、それは非常に小さな変更なので、代わりにメニュー出力にフィルタフックを追加することは可能ではないでしょうか?
私が正しく理解しているならば、あなたはサブメニューとのリンクにaria-haspopup
の属性を持たせたいです。これが正しければ、nav_menu_link_attributes
フィルタ(WP 3.6以降)を使ってそうすることができるはずです。また、フィルタ内のCSSクラスをチェックすることで、項目に子があるかどうかを確認するためのカスタムWalkerを作成する必要性を回避することもできます。
add_filter( 'nav_menu_link_attributes', 'wpse154485_add_aria_haspopup_atts', 10, 3 );
function wpse154485_add_aria_haspopup_atts( $atts, $item, $args ) {
if (in_array('menu-item-has-children', $item->classes)) {
$atts['aria-haspopup'] = 'true';
}
return $atts;
}