it-swarm-ko.tech

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를 변경하면 아무 것도 수행되지 않습니다.

EDIT 2

Nav-menu-template.php를 방문하고 container, container_id, container_class의 기본값을 변경하더라도 menu_id는 아무 것도하지 않습니다. menu_class를 yyy로 변경하면 div의 클래스가 메뉴에서 yyy로 변경됩니다.

3
Tom Savage

나는 문제를 저장했다 : 관리자 WordPress에 메뉴를 만들지 않으면 대체 방법을 사용하고 모든 활성 페이지에서 메뉴를 만듭니다 ... 그리고 이것이 wp_nav_menu의 옵션보다 사용되지 않는 경우 발생합니다. .

그래서 : admin에서 메뉴를 만들고 u는 래퍼 태그를 "nav"로 바꿀 수 있습니다.

6
user2802

우선, 네이티브 함수를 사용하여 <nav> 엘리먼트를 출력하도록 WordPress를 가져올 수 없습니다. <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
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