1

wp_nav_menu を使用して Wordpress に表示したい HTML メニューがあります。

HTML

<nav id="navigation" class="ddsmoothmenu">
<ul id="main-menu">
    <li><a href="index.html" class="current"><span>Home</span></a>
        <ul>
            <li><a href="index-2.html">Home Alternate 2</a></li>
            <li><a href="index-3.html">Home Alternate 3</a></li>
            <li><a href="index-4.html">Home Alternate 4</a></li>
            <li><a href="index-5.html">Home Alternate 5</a></li>
            <li><a href="index-6.html">Home Alternate 6</a></li>
        </ul>
    </li>
 </ul>

ナビゲーションメニューを表示するために、Wordpress の header.php ファイルに以下を追加しています。

$defaults = array(
               'theme_location'  => 'primary',
               'menu'            => 'Primary Menu',
               'container'       => '',
               'container_class' => '',
               'container_id'    => '',
               'menu_class'      => 'menu',
               'menu_id'         => '',
               'echo'            => true,
               'fallback_cb'     => 'wp_page_menu',
               'before'          => '',
               'after'           => '',
               'link_before'     => '<span>',
               'link_after'      => '</span>',
               'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
               'depth'           => 0,
               'walker'          => ''
             );
wp_nav_menu($defaults);

ただし、出力では、メニュー項目の第 2 レベルにもタグが追加されています。

<nav id="navigation" class="ddsmoothmenu">
<ul id="main-menu">
    <li><a href="index.html" class="current"><span>Home</span></a>
        <ul>
            <li><a href="index-2.html"><span>Home Alternate 2</span></a></li>
            <li><a href="index-3.html"><span>Home Alternate 3</span></a></li>
            <li><a href="index-4.html"><span>Home Alternate 4</span></a></li>
            <li><a href="index-5.html"><span>Home Alternate 5</span></a></li>
            <li><a href="index-6.html"><span>Home Alternate 6</span></a></li>
        </ul>
    </li>
 </ul>

最上位のメニュー項目にのみスパンを追加する方法、または第 2 レベルの項目からスパンを削除する方法はありますか?

4

3 に答える 3

3
add_filter( 'wp_nav_menu_objects', function( $items ) {
      foreach ( $items as $item ) {
        if (!$item->menu_item_parent) {
           $item->title = '<span>' . $item->title . '</span>';
        }
    }
    return $items;
});
于 2013-02-24T19:23:43.650 に答える
0

CSS を使用すると、サブメニューを非表示にすることができますwp_nav_menu

.sub-menu { display:none; }
于 2015-05-07T20:57:58.760 に答える
0

わかりました。walker はこれを行うための 1 つの良い方法のように見えますが、多くのコード行でかなり精巧に見えます。サブメニュー項目のスパンを削除する最も簡単な方法は jQuery を使用することです。Wordpressはサブメニュークラスを子ulに自動的に追加するため、私にとってうまくいったのは

$('ul.sub-menu li a span').contents().unwrap();

お役に立てれば。

于 2013-02-24T18:18:57.970 に答える