web-dev-qa-db-ja.com

wp_nav_menu()カスタムコンテナとcontainer_id

それで、今日私は私の最初のWordpressテーマに取り組み始めました、そして今のところそれはとても楽しいものでした。しかし、私はwp_nav_menu()に私が欲しいことをさせるのに苦労しました。

これが私が欲しいものです:

<nav id="topnav" class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</nav>

ドキュメンテーションを見ると、私は次のような呼び出しで自分がやりたいことができると思います。

<?php wp_nav_menu(array( 'container' => 'nav', 'container_id' => 'topnav' )); ?>

しかし、代わりに私はこれを得ます:

<div class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</div>

wp_nav_menu()からの出力は全く同じなので、私には私のカスタムパラメータが無視されているように見えます。これを有効にするためにどこかに電源を入れる必要があるものはありますか、それとも他に何か起こっているのでしょうか。

_編集_

奇妙なことに、menu_classを変更してもdivのクラスが変更されます(divがコンテナになると思っていました)が、menu_idを変更しても何も起こりません。

編集2

Nav-menu-template.phpに入ってcontainer、container_id、container_class、menu_idのデフォルトを変更しても何もしません。 menu_classをyyyに変更すると、divのクラスはmenuからyyyに変更されます。

3
Tom Savage

私は保存の問題を抱えていた:それはあなたが管理ワードプレスでメニューを作成しない場合はフォールバックメソッドを使用し、すべてのアクティブなページからメニューを作成するためです... 。

だから:ちょうど管理者でメニューを作成し、uはラッパータグを "nav"に変更することができます

6
user2802

まず第一に、ネイティブ関数を使ってWordPressにどんな種類の<nav>要素も出力させることはできません。 <nav>はHTML5タグで、WordPressはXHTML出力を生成するように構築されています。つまり<nav>要素はありません。


編集: /どうやらこの関数はnavを許可しています...しかし、WordPressコアの残りの部分はまだHTML5ではなくXHTMLを出力するように構築されていること。


その参照を削除してみてください。'container_id' => 'topnav'命令を無視しているというエラーが発生している可能性があります。 navを参照しなくても問題が解決しない場合は、次のようにします。

<div id="topnav" class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</div>
1
EAMann

Menu APIは部分的に壊れています、あなたは出力に頼ることはできません。それに関してtracには多様なチケットがあります、私はクイックサーチをしただけです、しかし、おそらくあなたの問題に対する解決策はそれらの1つで説明されます:

1
hakre

誰かがまだこれを解決しようとしているかどうかわからない - しかし、ちょうど自分自身で答えを見つけようとしてここに来た - 私は私の解決策を共有すると思った:)

また、<div>要素の代わりに<nav>を使用し、このページに記載されているように<div>を削除して解決しました。 wordpress codex:http://codex.wordpress.org/ Function_Reference/wp_nav_menu

<?php
function my_wp_nav_menu_args( $args = '' )
{
    $args['container'] = false;
    return $args;
} // function

add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );
?>

私のfunctions.phpファイルに追加され、<nav>タグでテーマファイルをマークアップしました。

0
user3160