it-swarm.cn

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()的输出完全相同。有什么东西我需要在某个地方打开以启用此功能还是还有其他事情发生?

_ edit _

奇怪的是,如果我改变menu_class它会改变div的类(我希望div成为容器),但改变menu_id什么都不做。

编辑2

即使进入nav-menu-template.php并更改容器,container_id,container_class,menu_id的默认值也无效。将menu_class更改为yyy会将div的类从菜单更改为yyy。

3
Tom Savage

我有保存问题:这是因为如果你不在admin wordpress中创建菜单,请使用回退方法并从所有活动页面中创建菜单......如果发生这种情况,则不会使用来自wp_nav_menu的选项。 。

所以:只需在管理员中创建菜单,你就可以将包装标签更改为“nav”

6
user2802

首先,您将无法使用本机函数让WordPress输出任何类型的<nav>元素。 <nav>是一个HTML5标记,WordPress用于生成XHTML输出...即没有<nav>元素。


编辑: 显然该函数允许nav ...但请记住,WordPress核心的其余部分仍然是为了输出XHTML而不是HTML5而构建的......请注意确保您的网站正确验证。


尝试删除该引用...它可能导致忽略'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

不确定是否还有人想要解决这个问题 - 但是我自己也试图找到答案 - 我以为我会分享我的解决方案:)

也想使用<nav>而不是<div>元素并通过删除<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