Как создать своё меню в WordPress с помощью кода

В WordPress меню — это важный элемент навигации, который помогает пользователям ориентироваться по сайту. Хотя большинство сайтов используют стандартный интерфейс для создания меню в админке, бывают ситуации, когда нужно создать меню программно, например, в кастомных темах или плагинах. В этой статье мы подробно разберём, как создать своё меню в WordPress с помощью PHP-кода, зарегистрировать его, вывести на фронтенд и настроить стили.

Зачем создавать меню программно в WordPress

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

  • Автоматический контроль структуры меню при установке темы или плагина.
  • Гибкая настройка вывода в шаблонах без использования админки.
  • Возможность добавлять нестандартные пункты меню с динамическими ссылками.
  • Управление меню для мультиязычных сайтов или специфических условий отображения.

Теперь перейдём к практическим шагам.

Регистрация нового меню в functions.php

Первый шаг — зарегистрировать место для меню в вашей теме. Обычно это делают в файле functions.php вашей темы или дочерней темы. Для регистрации меню используется функция register_nav_menus. Вот пример кода, который добавляет два меню — основное и футерное:

function wpcourse_register_menus() {
    register_nav_menus([
        'primary_menu' => __('Основное меню', 'wpcourse'),
        'footer_menu' => __('Меню в футере', 'wpcourse')
    ]);
}
add_action('after_setup_theme', 'wpcourse_register_menus');

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

Создание и вывод меню через wp_nav_menu

Чтобы вывести меню в нужном месте шаблона, используется функция wp_nav_menu. Например, чтобы вывести основное меню, добавьте в файл header.php следующий код:

wp_nav_menu([
    'theme_location' => 'primary_menu',
    'container' => 'nav',
    'container_class' => 'primary-navigation',
    'menu_class' => 'menu',
    'fallback_cb' => false
]);

Параметр theme_location указывает на зарегистрированное меню. Опция fallback_cb отключает вывод страниц, если меню не назначено.

Программное создание пунктов меню (создание меню и элементов через код)

Иногда нужно создать меню и заполнить его пунктами без участия пользователя. Для этого можно использовать функции WordPress для работы с меню через код:

  • wp_create_nav_menu($menu_name) — создаёт меню и возвращает его ID.
  • wp_update_nav_menu_item($menu_id, $item_id, $args) — добавляет или обновляет элемент меню.

Пример создания меню и добавления в него пунктов:

function wpcourse_create_custom_menu() {
    $menu_name = 'Custom Menu';
    $menu_exists = wp_get_nav_menu_object($menu_name);
    if(!$menu_exists) {
        $menu_id = wp_create_nav_menu($menu_name);

        // Добавляем ссылки
        wp_update_nav_menu_item($menu_id, 0, [
            'menu-item-title' => __('Главная', 'wpcourse'),
            'menu-item-url' => home_url('/'),
            'menu-item-status' => 'publish'
        ]);
        wp_update_nav_menu_item($menu_id, 0, [
            'menu-item-title' => __('Блог', 'wpcourse'),
            'menu-item-url' => home_url('/blog/'),
            'menu-item-status' => 'publish'
        ]);

        // Назначаем меню в локацию
        $locations = get_theme_mod('nav_menu_locations');
        $locations['primary_menu'] = $menu_id;
        set_theme_mod('nav_menu_locations', $locations);
    }
}
add_action('after_setup_theme', 'wpcourse_create_custom_menu');

Этот код при первом запуске создаст меню с двумя пунктами и автоматически назначит его в основное меню темы.

Добавление кастомных классов и атрибутов к пунктам меню

Чтобы расширить функциональность меню, можно добавлять свои CSS-классы и атрибуты к пунктам меню. Для этого используется фильтр nav_menu_css_class или walker. Пример добавления класса для всех пунктов меню:

function wpcourse_add_menu_item_class($classes, $item, $args, $depth) {
    $classes[] = 'wpcourse-menu-item';
    return $classes;
}
add_filter('nav_menu_css_class', 'wpcourse_add_menu_item_class', 10, 4);

Если нужна более сложная кастомизация — например, добавление иконок или специальных обёрток, стоит использовать кастомный класс Walker_Nav_Menu. Вот упрощённый пример:

class WPCourse_Walker_Nav_Menu extends Walker_Nav_Menu {
    function start_el(&$output, $item, $depth=0, $args=array(), $id=0) {
        $output .= '<li class="custom-class">';
        $output .= '<a href="' . esc_attr($item->url) . '">' . esc_html($item->title) . '</a>';
    }

    function end_el(&$output, $item, $depth=0, $args=array()) {
        $output .= "</li>";
    }
}

Применить этот walker можно так:

wp_nav_menu([
    'theme_location' => 'primary_menu',
    'walker' => new WPCourse_Walker_Nav_Menu()
]);

Полезные плагины для работы с меню в WordPress

Если хочется более удобного интерфейса или дополнительных возможностей, можно обратить внимание на плагины:

  • Clearfy Pro — улучшает админку, в том числе управление меню и оптимизацию.
  • WPCommunity — тема с расширенными возможностями настройки меню и навигации.

Выводы и советы по созданию меню в коде

Создание меню программно даёт полный контроль над навигацией, помогает автоматизировать задачи и интегрировать меню в сложные проекты. Главное — не забывать про удобство администрирования и совместимость с темой. Если меню простое — достаточно зарегистрировать локацию и вывести через wp_nav_menu. Если нужны динамические пункты — используйте создание элементов через функции WordPress.

Также рекомендуем внимательно тестировать меню на разных устройствах и браузерах, а для стилизации использовать кастомные классы и CSS. В итоге, программное создание меню — важный инструмент разработчика, позволяющий делать гибкие и мощные решения для сайтов на WordPress.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как использовать WP_Query для кругового вывода листингов в WordPress
19.12.2025
Как удалить таблицу из базы данных WordPress без плагинов: практическое руководство
09.12.2025
Как создать своё меню в WordPress с помощью кода: подробное руководство с примерами
05.01.2026
Как создать уникальный виджет в WordPress с подключением AJAX
29.11.2025
Как реализовать отложенный запуск функций в WordPress: практическое руководство
23.12.2025