wp_nav_menu : 메뉴가 존재하는 경우에만 메뉴 표시, 그렇지 않으면 아무것도 표시하지 않음


11

wp_nav_menu를 사용하여 메뉴가있는 경우에만 메뉴를 표시하려고하고 그렇지 않으면 아무것도 표시하지 않습니다.

메뉴를 삭제하면 페이지 목록이 출력됩니다.

내 functions.php 파일에는 다음이 포함됩니다.

if (function_exists('register_nav_menus')) {
register_nav_menus (
array('main_nav' => 'Main Navigation Menu'));}

wp_nav_menu를 사용하여 메뉴가있는 경우에만 메뉴를 표시하고, 그렇지 않으면 아무것도 표시하지 않으려면 어떻게해야합니까?

답변:


19

다음을 사용 하지 않고 has_nav_menu()를 사용 하고 테스트 하십시오 .theme_locationmenu_id

<?php
if ( has_nav_menu( $theme_location ) ) {
    // User has assigned menu to this location;
    // output it
    wp_nav_menu( array( 
        'theme_location' => $theme_location, 
        'menu_class' => 'nav', 
        'container' => '' 
    ) );
}
?>

else절 을 추가하여 대체 컨텐츠를 출력 할 수 있습니다 .

편집하다

당신은 $theme_location당신의 실제 와 교체해야합니다 theme_location:

<?php
if ( has_nav_menu( 'main_nav' ) ) {
    // User has assigned menu to this location;
    // output it
    wp_nav_menu( array( 
        'theme_location' => 'main_nav', 
        'menu_class' => 'nav', 
        'container' => '' 
    ) );
}
?>

어떤 메뉴가 존재하지 않는 경우는이 아무것도 출력하지 않지만이 경우, 그것은 불행하게도 같은 일 입니다 메뉴. 다른 아이디어가 있습니까?
Ryan

지정된 테마 위치에 메뉴를 적용 했습니까?
칩 베넷

아니요, 어떻게합니까?
Ryan

1
Dashboard -> Appearance -> Menus. 사용자 정의 메뉴를 만들어 저장 한 다음 드롭 다운 메뉴를 사용하여 지정된 테마 위치에 적용하십시오.
칩 베넷

아 네, 그렇게했습니다 (스크린 샷 : bit.ly/vrjNf9 ). 불행히도 문제는 여전히 지속됩니다. 메뉴가 나타나지 않습니다. 추신 : 내 기능 파일은 다음과 같습니다 : if (function_exists ( 'register_nav_menus')) {register_nav_menus (array ( 'main_nav'=> 'Main Navigation Menu'));}
Ryan


0

위치를 지정하지 않고 메뉴를 먼저 등록 할 수 있습니다.
에서 functions.php:

add_action( 'init', 'register_my_menus' );
function register_my_menus() {  
    register_nav_menus(
        array(
            'header' => __( 'Header Menu' )
        )
    );
}

에서 메뉴를 호출하면 다음을 header.php확인하십시오 has_nav_menu().

if ( has_nav_menu( 'header' ) ) {
    wp_nav_menu( array( 'theme_location' => 'header' ) ); 
}

당신이 메뉴를 등록하면 없이 테마의 위치, 당신은 나중에 요청할 수 테마 위치 제한.
fuxia

0

이것을 읽으십시오 :

http://codex.wordpress.org/Function_Reference/wp_nav_menu

set 'fallback_cb'=> false이며 아무것도 표시되지 않습니다. 이것은 wp guys가 제안한 표준 방법입니다.


이것은 chrisguitarguy 답변과 동일합니다 ...
brasofilo

나는 단지 워드 프레스 코덱에 대한 주요 기사를 지적하고 싶었다.
Hooman Askari

사실이 아닌 것 같습니다. 문서는 다음과 같이 말합니다. theme_location 매개 변수가 제공되지 않으면이 함수는 developer.wordpress.org/reference/functions/wp_nav_menu/… 메뉴 매개 변수가 제공 한 ID, 슬러그 또는 이름과 일치하는 메뉴를 표시 합니다. 그렇지 않으면, 비어 있지 않은 첫 번째 메뉴; 그렇지 않은 경우 (또는 메뉴가 제공 한 메뉴가 비어있는 경우) fallback_cb 매개 변수가 제공하는 함수의 출력 (기본적으로 wp_page_menu ()); 그렇지 않으면 아무것도 없습니다.
Alireza
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.