Заставить Меню в Wordpress использовать имя элемента меню вместо номера для идентификатора элемента списка? - PullRequest
2 голосов
/ 12 января 2011

Так что после вызова wp_nav_menu вроде:

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

Я получаю:

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

... id s как menu-item-1, menu-item-2 и т. Д.

Есть ли способ заменить числа заголовком страницы вместо этого, поэтому

menu-item-1 становится menu-item-contact,

menu-item-2 становится menu-item-store и т. Д.

Ответы [ 2 ]

1 голос
/ 23 августа 2012

Вам потребуется отфильтровать идентификатор с помощью фильтра nav_menu_item_id WordPress, который применяется в файле nav-menu-template.php .Он принимает три аргумента, но второй - это то, что нам нужно, чтобы фактически получить заголовок пункта меню и превратить его в нечто полезное для атрибута 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).

Обратите внимание, что эта функция получает заголовок пункта меню, который отличается от заголовка записи или страницы, если вы измените его на панели меню от администратора.

0 голосов
/ 27 июня 2017

На основании ответа @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 посмотрите @ этот гист и включите его в свой function.php * /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...