2017-10-23 9 views
1

ユーザーがホームページ以外のページに移動すると、ヘッダーのレイアウトが変更されます。WordPressメニューがヘッダーの外側に配置されます

機能はwp_nav_menu以外はすべて正常に機能します。

まず、ユーザーがホームページにいるかどうかを確認します。その結果に応じて、ユーザーには2つのヘッダーの1つが表示されます。ここで

は、コードは次のとおりです。

<?php 
    $menu = wp_nav_menu(array('theme_location' => 'hoofdmenu')); 
    echo is_front_page() ? '' : ' 
    <header> 
     <div class="hoofdmenu"> 
      <div class="hamburger"> 
       <a href="#" id="click-a"><img width="80" height="80" src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a> 
      </div> 
      '.$menu.' 
     </div> 
    </header>'; 
?> 

短いそれを維持するために、私はif文のtrue値を削除しました。 wp_nav_menuheaderの外側に配置されている理由の

<div class="menu-hoofdmenu-container"> 
    <ul id="menu-hoofdmenu" class="menu"> 
     <li>Menu item 1</li> 
     <li>Menu item 2</li> 
     <li>Menu item 3</li> 
    </ul> 
</div>  
    <header> 
     <div class="hoofdmenu"> 
      <div class="hamburger"> 
       <a href="#" id="click-a"><img width="80" height="80" src="http://www.url.nl/wp-content/themes/themename/images/hamburger.png"></a> 
       </div> 
      </div> 
     </div> 
    </header> 

任意の考え:

は、今私が持っている問題はメニューがここheader

完全に外側に配置されていることであるHTML出力のですか?

-------更新--------

echo is_front_page() ? '' : ' 

    <header> 
     <div class="hoofdmenu"> 
      <div class="hamburger"> 
       <a href="#" id="click-a"><img width="80" height="80" src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a> 
      </div> 
      '.wp_nav_menu(array('theme_location' => 'hoofdmenu')).' 
     </div> 
    </header> 

答えて

5

(答えの下部の更新は、あなたが最初の部分をスキップすることができます追加しました)

Docsによれば、この機能はメニューを表示し(echo)、を返しません。

wp_nav_menu(配列$ argsを=配列())

ナビゲーションメニューを表示します。したがって

、あなたはあなたが実際にかなり$menu変数に保存し、したがって、それはヘッダーのコードの前に印刷されていますよりも、メニューを印刷

$menu = wp_nav_menu(array('theme_location' => 'hoofdmenu')); 

を使用しています。

ソリューションは、次のようになります。

echo is_front_page() ? '' : ' 
<header> 
    <div class="hoofdmenu"> 
     <div class="hamburger"> 
      <a href="#" id="click-a"><img width="80" height="80" src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a> 
     </div> 
     '.wp_nav_menu(array('theme_location' => 'hoofdmenu')).' 
    </div> 
</header>'; 

UPDATE:

次のことを試してみてください。

if(!is_front_page()){ 

    echo '<header> 
     <div class="hoofdmenu"> 
      <div class="hamburger"> 
       <a href="#" id="click-a"><img width="80" height="80" src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a> 
      </div>'; 

      wp_nav_menu(array('theme_location' => 'hoofdmenu')); 

    echo ' 
     </div> 
    </header>'; 
} 

より良い更新:

同じコードを使用しますargs配列に 'echo'オプションを追加するだけです。 出力する代わりに出力を返すように関数に指示することができます。

'echo'(bool)メニューをエコーするか返すかを指定します。デフォルトはtrueです。

使用法:

$menu = wp_nav_menu(array('theme_location' => 'hoofdmenu', 'echo' => false)); 
1

シンプルなソリューション。 echoをfalseにするとコードが機能します。 投稿者:WP Docs。

//'echo' 
//(bool) Whether to echo the menu or return it. Default true. 

$menu = wp_nav_menu(array('theme_location' => 'hoofdmenu', 'echo' => false)); 
関連する問題