Вопрос или проблема
Меню зарегистрированы в functions.php
, но они не появляются в разделе Внешний вид > Меню в административной панели, а параметры страниц, записей и т. д. серые.
Меню сохранены, так как вы не можете снова создать меню с таким же именем.
Внутри functions.php
:
function theme_setup() {
add_theme_support( 'automatic-feed-links' );
add_theme_support( 'post-thumbnails' );
add_theme_support( 'html5', array( 'search-form' ) );
/*** Регистрация меню */
if (function_exists('register_nav_menus'))
{
register_nav_menus(
array(
'main-menu' => __( 'Главное меню', 'site' ),
'footer-menu' => __( 'Меню подвала', 'site' ),
)
);
}
}
add_action('after_setup_theme', 'theme_setup');
Внутри header.php
wp_nav_menu(
array(
'menu' => 'Главное меню',
'container' => '',
'depth' => 1,
'theme_location' => 'main-menu',
)
);
Внутри footer.php
wp_nav_menu(
array(
'menu' => 'Меню подвала',
'container' => '',
'items_wrap' => '',
'theme_location' => 'footer-menu'
)
);
Основная проблема в том, что эти меню существуют и отображаются на сайте, но, похоже, они скрыты в административной панели, и если создать новое меню, оно никогда не отображается.
Используется версия WordPress 4.7 (последняя)
Что может быть причиной этого?
С вашей theme_setup()
функцией в файле functions.php
ничего не так.
Ошибка, которую вы получаете, просто указывает на то, что название меню Главное меню уже существует.
Чтобы решить эту проблему, вам следует заменить определения названия меню Главное меню в вашем файле functions.php
на что-то другое, кроме текущего названия.
Возможно, вы используете тему или плагин, у которого уже зарегистрировано такое название меню, что объясняет конфликт текущих названий меню.
Обновление:
Ваш код работает хорошо. Я думаю, что ваша проблема связана с зарегистрированными местами меню в сравнении с фактическим меню (из панели управления, как фактические меню, которые должны отображаться в данном зарегистрированном месте меню).
Что вам следует сделать: введите в поле “Название меню”, как видно на вашем первом скриншоте, новое название меню, затем нажмите кнопку “Создать меню”; ваши кастомные зарегистрированные места меню тогда будут видны, как показано на скриншоте ниже:
ОБНОВЛЕНИЕ:
Проблема была вызвана плагином WPCoreSys. Не уверен в его назначении.
Что-то в плагине вызвало конфликт и остановило работу редактора меню.
Плагин не был виден в разделе Плагины, но он был присутствовал в файловой директории. Так как он не был активен, он был удален, и теперь область меню функционирует как ожидалось.
Ответ или решение
Вопрос о том, почему меню не отображаются в разделе "Внешний вид > Меню" в админке WordPress, несмотря на их регистрацию в файле functions.php
, является достаточно распространенным. Давайте разберемся с возможными причинами и путями их решения.
1. Правильная регистрация меню в functions.php
Судя по вашему коду, регистрация меню выполнена корректно. Необходимо убедиться, что используются правильные id для меню, которые вы затем будете использовать в методах wp_nav_menu()
. Например:
register_nav_menus(array(
'main-menu' => __('Main Menu', 'site'),
'footer-menu' => __('Footer Menu', 'site'),
));
2. Конфликт имен меню
Если меню имеют одно и то же имя, это может вызвать проблемы. В вашей ситуации, если вы уже сохраняли меню с таким названием, система WordPress не позволит создать новое с тем же именем. Попробуйте изменить название меню при его создании в админке, например, "Основное меню".
3. Проверка плагинов
Как упомянуто в вашем вопросе, проблема могла быть вызвана плагином, который вы не могли обнаружить в администраторском интерфейсе. Например, плагин WPCoreSys мог вызвать конфликт, препятствующий правильной работе интерфейса меню. В данном случае, вы правильно сделали, что удалили этот плагин и тем самым решили проблему.
4. Кэш и обновления
Иногда, обновления самой системы WordPress или кэша могут привести к таким проблемам. Попробуйте очистить кэш браузера и, если используете плагины кэширования на сайте, сбросьте кэш на сервере.
5. Убедитесь в отсутствии ошибок
Проверьте, есть ли ошибки в консоли разработчика вашего браузера. Ошибки JavaScript могут нарушать работу интерфейса администраторов. Для этого нажмите F12 и перейдите на вкладку "Console".
6. Поддержка темы
Иногда, проблемы с отображением меню могут быть связаны с темой, которую вы используете. Убедитесь, что ваша тема обновлена до последней версии и совместима с текущей версией WordPress.
Заключение
Если вы следуете всем вышеупомянутым рекомендациям, но проблема все еще сохраняется, возможно, следует рассмотреть возможность проверки и редактирования файлов темы для поиска скрытых конфликтов. Часто полезно временно переключаться на стандартную тему, такую как Twenty Twenty-One, чтобы определить, является ли проблема специфичной для вашей темы.
Обратитесь к документации WordPress или сообществу поддержки, если проблемы остаются нерешенными. Методический подход и последовательное устранение ошибок помогут вам вернуть полную функциональность административной панели вашей установки WordPress.