Вопрос или проблема
<?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 или задать вопросы на форумах поддержки сообщества.