所以在致电wp_nav_menu后如:
<?php wp_nav_menu( array('menu' => 'Primary Menu' )); ?>
我最终得到了:
<li id="menu-item-1">
<li id="menu-item-2">
... id
就像menu-item-1
,menu-item-2
等
有没有办法用页面标题替换数字,所以
menu-item-1
变为menu-item-contact
,
menu-item-2
变为menu-item-store
等?
答案 0 :(得分:1)
您需要使用WordPress的nav_menu_item_id
过滤器过滤ID,该过滤器已应用于nav-menu-template.php file。它需要三个参数,但第二个是我们需要实际获取菜单项的标题,并将其转换为对ID属性有用的东西。这是一个功能,在WordPress 3.4.1中适用于我:
function custom_nav_menu_item_id($id, $item) {
$title = sanitize_title_with_dashes($item->title);
return 'menu-item-'.$title;
}
add_filter('nav_menu_item_id', 'custom_nav_menu_item_id', 10, 2);
这使用另一个WordPress函数将标题清理为可用于ID属性(或任何其他HTML属性)的字符串。
请注意,此功能获取菜单项的标题,如果您在菜单面板中从管理员更改了该标题,则该标题与帖子或页面标题不同。
答案 1 :(得分:0)
基于@Jeremy回答:我只是添加sanitize_title()来删除重音和特殊字符。
function custom_nav_menu_item_id($id, $item) {
$title = sanitize_title_with_dashes(sanitize_title($item->title));
return 'menu-item-'.$title;
}
add_filter('nav_menu_item_id', 'custom_nav_menu_item_id', 10, 2);
/ ** 更好的wp清洁 take a look @ this gist and include it in your function.php * /