Добавление полей к пунктам меню

Обзор

Это руководство покажет, как добавить пользовательские поля к пункту меню WordPress и как затем изменить HTML пункта меню.

Меню используются для организации группы ссылок (пунктов меню), которые ваша тема будет выводить в качестве навигации. Если вы не знакомы с регистрацией или редактированием меню, прочитайте документацию Руководство пользователя меню WordPress и Navigation_Menus.

Пункты меню добавляются в меню. Узнайте, как добавлять поля в меню.

Журнал изменений

  • Поддержка меню добавлена в версии 5.6.0

Добавление полей

Плагин Advanced Custom Fields очень упрощает добавление пользовательских полей к пункту меню. Следуйте инструкциям ниже.

  1. На экране админки Пользовательские поля нажмите кнопку Добавить новое, чтобы создать новую группу полей.
  2. Добавьте поля, которые вы хотите видеть при редактировании пункта меню
  3. В разделе Расположение выберите правило Пункт меню и укажите ‘Все’ (чтобы показывать эту группу полей во всех пунктах меню) или конкретное меню/расположение (чтобы показывать эту группу полей только для пунктов определённого меню)

Измените параметр Размещение инструкции на ‘Ниже подписей’, чтобы максимально приблизить интерфейс к стандартному UI ядра WP.

Редактирование полей

После того как вы создадите группу полей и назначите ее отображение на экране редактирования пункта меню, значения полей можно редактировать на странице админки Внешний вид > Меню.

WP хранит каждый пункт меню как объект записи в таблице wp_posts. ACF будет хранить все значения пользовательских полей в таблице wp_postmeta.

Отображение полей

Настроить HTML для пункта меню WordPress можно легко с помощью фильтра wp_nav_menu_objects. Этот фильтр срабатывает каждый раз, когда меню выводится (через функцию wp_nav_menu()) и позволяет изменять объекты пунктов меню. Каждый объект содержит значение title, которое выводится в элементе ссылки меню <a>.

В этом примере показано, как изменить все объекты пунктов меню и добавить значок, если для нового поля ‘icon’ задано значение.

functions.php

add_filter('wp_nav_menu_objects', 'my_wp_nav_menu_objects', 10, 2);

function my_wp_nav_menu_objects( $items, $args ) {
    
    // цикл
    foreach( $items as &$item ) {
        
        // переменные
        $icon = get_field('icon', $item);
        
        
        // добавить значок
        if( $icon ) {
            
            $item->title .= ' <i class="fa fa-'.$icon.'"></i>';
            
        }
        
    }
    
    
    // вернуть
    return $items;
    
}

Вывод

Вот как это может выглядеть в вашем браузере. Обратите внимание на новые элементы значка <i>!

Примечания

Зарезервированные ключевые слова

Имейте в виду, что для пунктов меню существуют некоторые зарезервированные ключевые слова, которые могут конфликтовать с именами полей. Чтобы избежать ошибок, которые потенциально могут сломать экран настройщика, не используйте “description” как имя поля, когда оно привязано к пункту меню.

Сохранить

Обновлено: 01.06.2026