为什么容器参数不适用于wp_NAV_MENU()

时间:2015-02-06 作者:codecowboy

以下代码输出一个菜单,但容器<nav> 缺少标记。

$menu_settings = array(
    \'menu\' => \'Packages\',
    \'container\' => \'nav\',
    \'container_class\' => \'\',
    \'container_id\' => \'\',
    \'menu_class\' => \'menu\',
    \'menu_id\' => \'\',
    \'echo\' => true,
    \'fallback_cb\' => \'wp_page_menu\',
    \'before\' => \'\',
    \'after\' => \'\',
    \'link_before\' => \'\',
    \'link_after\' => \'\',
    \'items_wrap\' => \'<ul id="%1$s" class="%2$s">%3$s</ul>\',
    \'depth\' => 0,
    \'walker\' => \'\',
    \'theme_location\' => \'primary\' );

?>

      <?php wp_nav_menu( $menu_settings ); ?>
这些是在函数中注册的。php:

register_nav_menus( array(
 \'primary\' => __( \'Packages Menu\', \'nameoftheme\'),
 \'secondary\' => __( \'Services Menu\', \'nameoftheme\' ),
) );
仅a<ul> 使用列表项进行渲染。列表项也未包装。

1 个回复
最合适的回答,由SO网友:codecowboy 整理而成

由于我使用的是根主题框架,this line 删除容器参数:

function roots_nav_menu_args($args = \'\') {
  $roots_nav_menu_args = array();
  $roots_nav_menu_args[\'container\'] = false;
  if (!$args[\'items_wrap\']) {
    $roots_nav_menu_args[\'items_wrap\'] = \'<ul class="%2$s">%3$s</ul>\';
  }
  if (!$args[\'depth\']) {
    $roots_nav_menu_args[\'depth\'] = 2;
  }
  return array_merge($args, $roots_nav_menu_args);
}
add_filter(\'wp_nav_menu_args\', \'roots_nav_menu_args\');

结束

相关推荐

Add Protocol to Custom Menus

我一直在使用tel: 自定义菜单中的链接与响应性设计相结合,为我的智能手机主题添加了“立即呼叫”按钮。它一直运行良好。一位客户刚刚要求我也添加一个“发送文本”按钮。我想我会用sms: 它似乎有可接受的设备支持。然而,当我保存菜单时,WordPress将其从URL中删除。经过研究,我得出结论,这与esc_url() 和/或wp_kses() (参见Trac ticket #18268). 我编造了以下代码,试图自己添加SMS协议并将其放入函数中。php:<?php function add_n