wp_nav_menu возвращает список меню в порядке возрастания. Как я могу расположить меню так же, как меню панели управления?

Вопрос или проблема

 <?php
              wp_nav_menu(array(
                  'theme_location' => 'primary',
                  'container' => 'ul',
                  'menu_class'=> 'top-menu'
                  /* 'walker' => new Walker_nav_Primary() */
                  )
              );                  
          ?>

Это простой wp_nav_menu

введите описание изображения здесь

Вы можете увидеть сортировку по возрастанию из приведенного выше примера

Я сделал это в WP.

введите описание изображения здесь

wp_nav_menu дает мне меню в порядке возрастания. Как я могу упорядочить его как на панели управления?

Пожалуйста, помогите.

Пожалуйста, используйте код ниже в файле funcation.php вашей темы

function my_asc_nav_menu($menu, $args) {
if (isset($args->reverse) && $args->reverse) {
return array_reverse($menu);
}
return $menu;
}
add_filter('wp_nav_menu_objects', 'my_asc_nav_menu', 10, 2);

Также используйте вашу функцию wp_nav_menu следующим образом:

 wp_nav_menu(array(
              'theme_location' => 'primary',
              'container' => 'ul',
              'menu_class'=> 'top-menu',
              'reverse' => FALSE,

              )
          );       

Насколько я могу судить, если theme_location неверен, меню по умолчанию сортируется в алфавитном порядке, а не в порядке, установленном на экране меню.

Я вижу, что у вас стоит галочка рядом с Primary Menu в настройках меню, но фактический ключ / slug может отличаться в вашей теме. Например:

register_nav_menus( array(
    'customkey' => __( 'Primary Menu', 'twentysixteen' ),
    'social'  => __( 'Social Links Menu', 'twentysixteen' ),
) );

Если вы выполните поиск по:

register_nav_menus

в коде вашей темы, вы сможете найти правильное значение.

Затем вы можете добавить это в свой код, например:

wp_nav_menu(array(
              'theme_location' => 'customkey',

Ответ или решение

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

1. Убедитесь в правильной регистрации меню

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

register_nav_menus( array(
    'primary' => __( 'Primary Menu', 'text_domain' ),
) );

Проверьте, что ключ в wp_nav_menu действительно совпадает с зарегистрированным месторасположением. Если вы используете theme_location => 'primary', убедитесь, что именно этот ключ зарегистрирован.

2. Использование фильтров для изменения порядка меню

В WordPress имеет смысл использовать фильтры для изменения порядка вывода меню. В калуде вы можете добавить следующий код в файл functions.php вашей темы. Этот код изменяет порядок элементов меню в зависимости от параметра:

function my_custom_order_nav_menu($items, $args) {
    // В этом примере вы можете изменить порядок меню по своему усмотрению
    // Например, если вам нужно показывать элементы в определённом порядке:
    $order = array('item-1', 'item-2', 'item-3'); // Замените на ваши ключи меню
    usort($items, function($a, $b) use ($order) {
        return array_search($a->slug, $order) - array_search($b->slug, $order);
    });
    return $items;
}
add_filter('wp_nav_menu_objects', 'my_custom_order_nav_menu', 10, 2);

3. Вызов функции wp_nav_menu

После применения нужных фильтров вы можете вызвать wp_nav_menu без дополнительных параметров. Убедитесь, что ваш вызов выглядит следующим образом:

wp_nav_menu(array(
    'theme_location' => 'primary',
    'container' => 'ul',
    'menu_class' => 'top-menu',
));

Заключение

Таким образом, вы можете контролировать порядок отображения элементов в вашем меню, используя правильную регистрацию и фильтрацию в functions.php. Это даст вам гибкость, чтобы отображать меню так же, как это сделано в административной панели WordPress, обеспечивая при этом уникальность и соответствие вашему дизайну.

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

Оцените материал
Добавить комментарий

Капча загружается...