在Wordpress中使用菜单项名称而不是列表项ID的编号?

时间:2011-01-12 03:27:49

标签: php wordpress

所以在致电wp_nav_menu后如:

<?php wp_nav_menu( array('menu' => 'Primary Menu' )); ?>

我最终得到了:

<li id="menu-item-1">
<li id="menu-item-2">

... id就像menu-item-1menu-item-2

有没有办法用页面标题替换数字,所以

menu-item-1变为menu-item-contact

menu-item-2变为menu-item-store等?

2 个答案:

答案 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 * /