register_nav_menus() не регистрирует меню

26 февр. 2012 г., 06:43:18
Просмотры: 20.6K
Голосов: 6

Помогите с регистрацией меню:

Я следовал этому руководству (http://codex.wordpress.org/Navigation_Menus) шаг за шагом.

Добавил следующий код в functions.php:

function register_my_menus() {
  register_nav_menus(
    array('header-menu' => __( 'Верхнее меню' ) )
  );
}

add_action( 'init', 'register_my_menus' );

Но в руководстве говорится, что это должно привести к появлению меню в административной панели Внешний вид -> Меню в блоке "Расположение меню" как "Верхнее меню".

Когда я перехожу в раздел Внешний вид -> Меню, все опции неактивны (серые), и нет опции "Расположение меню"

1
Комментарии

Добавьте скриншот страницы wp-admin/nav-menus.php. И разберитесь с другими своими "осиротевшими" вопросами.

fuxia fuxia
26 февр. 2012 г. 06:49:20
Все ответы на вопрос 1
4

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

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

if (function_exists('register_nav_menu'))
{
    register_nav_menu('header_menu', 'Header Menu');
}

Определение и использование навигационного меню в вашей теме: Обычно мы размещаем DIV-код меню в файле header.php; поэтому я предполагаю, что у вас он также находится в этом файле. Откройте этот файл и найдите DIV-контейнер, где должно появиться ваше навигационное меню WordPress. Вот пример из одной из моих недавних тем WordPress для вашего удобства:

<div class="css-nav" >

<?php wp_nav_menu( array(
    'sort_column' => 'menu_order',
    'theme_location' => 'header_menu',
    'menu_class' => 'css-menu',
    'title_li' => '<div class="l"></div>',
    'link_before' => '<span class="l">',
    'link_after' => '</span>'
) ); ?> </div>

После добавления этого кода перейдите в WP Админку - Меню. Создайте новое меню, если у вас его еще нет. Как только вы создадите меню, вы должны увидеть метабокс "Расположение в теме" с левой стороны области управления пунктами меню.

Надеюсь, это поможет. :-)

С уважением,

Рутурадж.

26 февр. 2012 г. 07:06:10
Комментарии

+1 за хорошо оформленный, качественный ответ от нового пользователя. Добро пожаловать на WPSE. :)

Jared Jared
26 февр. 2012 г. 07:09:57

function_exists('register_nav_menu') не делает ничего полезного: nav-menu.php загружается до functions.php темы (см. wp-settings.php). Параметры 'sort_column' и 'title_li' не являются допустимыми аргументами.

fuxia fuxia
26 февр. 2012 г. 07:28:50

Спасибо... Это работает! Наконец-то! Документации WordPress серьезно не хватает обновлений

php-b-grader php-b-grader
26 февр. 2012 г. 07:38:49

Вау! Одно из 3 меню появилось сразу после того, как я добавил условие (function_exists('register_nav_menu')), но как сделать, чтобы остальные два тоже отображались? if (function_exists('register_nav_menu')) {

`register_nav_menus('headerMenuLocation', 'Header Menu Location');`
`register_nav_menus('footerLocationOne', 'Footer Location One');`
`register_nav_menus('footerLocationTwo', 'Footer Location Two'); }`
YCode YCode
17 сент. 2018 г. 22:18:58