我尝试了几种选择,如设置\'container\' => false
并注册theme_location 并在论坛上搜索,但我无法摆脱页面中wp\\U nav\\U菜单中的“div”:
<?php get_nav_menu();?>
function get_nav_menu() {
$navMenuDefaults = array(
\'theme_location\' => \'header-nav\',
\'menu\' => \'\',
\'container\' => false,
\'container_class\' => \'\',
\'container_id\' => \'\',
\'menu_class\' => \'\',
\'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\' => \'\'
);
return wp_nav_menu($navMenuDefaults);
}
和在函数中。php:
function register_top_nav() {
register_nav_menu(\'header-nav\',__( \'Header Nav\' ));
}
add_action( \'init\', \'register_top_nav\' );
我不确定为什么会得到以下输出:
<div class="">
<ul>
<li class="page_item page-item-2">
<a href="url">Sample Page</a>
</li>
</ul>
</div>
如何获得以下内容:
<ul class="abc">
<li>
<a href="#">dfdf</a>
</li>
</ul>
谢谢。
SO网友:bosco
问题
您没有
created a menu on the Appearance > Menus
panel in the WordPress admin dashboard.
我的推理基于以下情况下发生的错误:
尚未创建导航菜单wp_nav_menu()
使用默认值调用\'fallback_cb\'
论点\'wp_page_menu\'
wp_nav_menu()
用一个\'container\'
参数旨在消除容器(任何the empty()
function 退货true
对于)溶液,下列任一项应去除<div>
容器在中创建菜单Appearance > Menus
面板无关的<div>
即使您没有将新菜单与注册的\'header-nav\'
主题位置更改\'fallback_cb\'
一个自定义函数的参数,该函数返回一些默认标记,甚至是一个空字符串,即。
\'fallback_cb\' => function() { return \'\'; },
如果wp_nav_menu()
函数找不到所指示的菜单,然后尝试另外两种方法来生成菜单标记:显示找到的第一个填充菜单显示菜单标记由\'fallback_cb\'
参数(默认情况下,wp_page_menu()
).
您发布的标记用于
page
帖子ID为的帖子类型
2
标题“示例页”,可能表示新的WordPress安装,可以合理地假设没有创建菜单。这表明您的
wp_nav_menu()
电话可能会退回到
wp_page_menu()
, 因为回退功能将从安装中的任意数量的页面创建临时菜单。
当\'fallback_cb\'
调用函数时,将向其传递与给定的参数相同的参数wp_nav_menu()
(与默认参数合并)。这里是关于wp_page_menu()
函数有点过时,因为从WordPress 4.4.0开始,函数实际上接受并处理\'container\'
论点所以wp_page_menu()
是用同样的\'container\'
你交给的论点wp_nav_menu()
, 那就是\'\'
(空字符串文字)或false
.
问题的实质是一种自相矛盾的行为these lines 在里面wp_page_menu()
:
// Fallback in case `wp_nav_menu()` was called without a container.
if ( empty( $container ) ) {
$container = \'div\';
}
所以,自从
empty()
计算两个布尔值
false
以及
\'\'
到
true
, 这个小小的故障保险箱认为你不想要一个容器太疯狂了,于是又为你加了一个。
SO网友:MD MUSA
您可以尝试此方案。
Step 1:
将此代码放入主题
functions.php
文件:
add_action( \'after_setup_theme\', \'theme_nav_setup\' );
if ( ! function_exists( \'theme_nav_setup\' ) ){
function theme_nav_setup() {
register_nav_menu( \'header-nav_new\', __( \'Main Menu\', \'text-domain\' ) );
}
}
Step 2:
然后在可以看到此菜单输出的地方调用此选项:
wp_nav_menu( array(
\'menu\' => \'header-nav_new\',
\'theme_location\' => \'header-nav_new\',
\'depth\' => 6,
\'container\' => \'ul\',
\'fallback_cb\' => \'wp_page_menu\',
\'menu_class\' => \'abc\'
)
);