当我们使用显示菜单时wp_nav_menu
, 它创建的菜单结构如下:
<div class="container">
<ul class="list">
<li class="item">
<a class="link" href="#">Link 1</a>
</li>
<li class="item">
<a class="link" href="#">Link 2</a>
</li>
<li class="item">
<a class="link" href="#">Link 3</a>
</li>
<li class="item">
<a class="link" href="#">Link 4</a>
</li>
<li class="item">
<a class="link" href="#">Link 5</a>
</li>
</ul>
</div>
我如何才能将其更改为这样:
<div class="container">
<a href="#">Item 1</a>
<a href="#">Item 2</a>
<a href="#">Item 3</a>
<a href="#">Item 4</a>
<a href="#">Item 5</a>
</div>
我试图通过过滤器对其进行自定义,但我无法通过参数检查菜单,参数只是为空。
我的代码如下:
// page.php
wp_nav_menu([ \'theme_location\' => \'sidebar_menu\' ]);
// functions.php
function custom_menu($items, $args) {
// ....
print_r($args); // NULL
}
apply_filter(\'wp_nav_menu\', \'custom_menu\');
最合适的回答,由SO网友:Ted Stresen-Reuter 整理而成
自定义菜单标记只能通过添加WordPress过滤器和使用您自己的自定义菜单模板来完成。
不幸的是,菜单不是WordPress template hierarchy 所以你需要这样做:
add_filter( \'wp_nav_menu\', function( $nav_menu, $args ) {
if( \'my_custom_menu\' == $args->menu->slug ) {
// include a template with your required markup
// reference both the $nav_menu and $args params in the template
return include(\'my-nav-template.php\');
} else {
return $nav_menu;
}
}, 10, 2);
这是一个略略的答案。您需要阅读
nav_menu object / function 为了准确地知道如何解析对象,但这很简单。
此外,请确保在调用之前注册了侧栏菜单wp_nav_menu()
在尝试此代码之前,至少有一个菜单已分配给侧栏。
祝你好运