2017-10-23 5 views
1

사용자가 홈페이지가 아닌 다른 페이지로 이동하면 헤더가 레이아웃을 변경합니다.WordPress 메뉴가 헤더 바깥에 있습니다.

wp_nav_menu을 제외한 모든 기능이 작동합니다.

먼저 사용자가 홈페이지에 있는지 여부를 확인합니다. 결과에 따라 사용자에게 두 개의 헤더 중 하나가 표시됩니다.

<?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 (배열 $ 인수 = 배열 ​​())

표시하는 네비게이션 메뉴. 따라서

, 당신은 당신이 실제로 오히려 $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));