wp_nav_menuの出力からラッピングdivとulを削除


16

私はWordpressの新しいメニューシステムを使用していますが、これはwp_nav_menu()の結果です

    <div class="menu-main-menu-container">
   <ul id="menu-main-menu" class="menu">
   <li id="menu-item-28" class="menu-item menu-item-type-post_type current-menu-item page_item page-item-21 current_page_item menu-item-28"><a href="http://www.bemang.com/">Trang nhà</a></li>
    <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-29"><a href="http://www.bemang.com/blog/">Blog</a></li>
    <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-30"><a href="http://www.bemang.com/gioi-thieu/">Giới thiệu</a></li>
    </ul>
   </div>

私が欲しいのはこれだけです:

<li id="menu-item-28" class="menu-item menu-item-type-post_type current-menu-item page_item page-item-21 current_page_item menu-item-28"><a href="http://www.bemang.com/">Trang nhà</a></li>
   <li id="menu-item-29" class="menu-item menu-item-type-post_type menu-item-29"><a href="http://www.bemang.com/blog/">Blog</a></li>
   <li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-30"><a href="http://www.bemang.com/gioi-thieu/">Giới thiệu</a></li>

いいえ、divまたはulをラッピングし、いくつかの方法でグーグルを試しましたが、結果はありません:(

回答:


27

divのラッピングは簡単です。を使用する場合wp_nav_menu()、次の引数を追加します。'container' => false

以下のため<ul>の要素と呼ばれる引数があります'items_wrap'。その詳細については、woodchuckyの回答を参照してください(そして、賛成です!)。


どうもありがとう!今は動作します。私はPHPに精通していなかったため、functions.phpにadd_filterを追加する必要があることを知りませんでした。

1
divを削除する方法についてはまだ説明していませんが、上で説明したwrap_classをまとめています。falseに設定されたコンテナ引数は機能しません。
セルジオ

2
container引数が機能しない場合、それはを使用していないことを意味しますwp_nav_menu。おそらくフォールバックcbを実行しています。デフォルトではwp_page_menu()、メニュー、またはメニューが割り当てられたメニューの場所のいずれかを指定しなかったため、デフォルトになります。
ジョンPブロッホ

29

wp_nav_menu() 文書化されていないパラメーターを受け入れます

'items_wrap' => ' <ul id="%1$s" class="%2$s">%3$s</ul>'

これは次によって実行されます。 $nav_menu .= sprintf( $args->items_wrap, esc_attr( $wrap_id ), esc_attr( $wrap_class ), $items );

sprintf引数をいじることができます

例: 'items_wrap' => '%3 $ s'はラッピング<ul>タグを削除します


へえ、クール!そして、WPSE @woodchuckyへようこそ!
fuxia

5

liのみを出力するには、これをwp_nav_menu配列に追加します。

'container'      => '',
'items_wrap'    => '%3$s',

2

'container' => false私は存在しない指定されたため、私のために失敗していた'theme_location''menu'。これを修正するとすぐに機能しました。

ソリューション:wordpress.org/support


0

ラッピングdivを除外するには:

add_filter('wp_nav_menu_args', 'prefix_nav_menu_args');
function prefix_nav_menu_args($args = ''){
    $args['container'] = false;
    return $args;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.