Добавление пользовательского пункта меню в меню WordPress

У меня есть меню WordPress, в котором есть несколько элементов меню, которые я добавил через стандартную (перетаскивание) функцию меню администратора WordPress. Недавно мне пришлось добавить еще один элемент в меню, которое генерирует динамическую ссылку href. Я достиг этого, используя следующий код в файле functions.php:

// добавление элемента моего профиля в динамическом режиме в меню участников (сгенерируйте имя пользователя на основе текущего пользователя, входящего в систему)

add_filter ('wp_nav_menu_items', 'add_profilelink_in_menu', 10, 2);

function add_profilelink_in_menu ($ items, $ args) {

if( $args->theme_location == 'secondary') { global $current_user; //converts user id to username $user_info = get_userdata($current_user->ID); $items .='<li id="menu-item-2091" class="menu-item menu-item-2091"> <a href="https://www.mysite.com/members/' . $user_info->user_login .'">Profile</a> </li>'; } return $items; 

}

Моя проблема в том, что этот пункт меню добавляется в конец меню, и обычные классы меню WordPress, такие как «текущий пункт меню», не применяются к этому элементу. Есть ли способ контролировать положение, в котором этот элемент меню добавляется (например: добавить этот элемент после первых двух элементов?)

и как я могу заставить WordPress рассматривать этот динамически созданный пункт меню как обычный элемент меню и добавить ли он все классы, в которые он добавляет другие элементы меню (созданные с помощью функции меню WordPress)?

Спасибо за любую помощь.

Вот логика, которую вы можете использовать, используя jquery

  //suppose your menu is this <ul id="secondary_nav"> <li id="li_unique_id_1"><a href="">menu 1</a></li> <li id="li_unique_id_2"><a href="">menu 2</a></li> <li id="li_unique_id_4"><a href="">menu 4</a></li> </ul> //the jquery workaround //place this in your footer <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script> <script type='text/javascript'> $(function(){ <?php global $current_user; //converts user id to username $user_info = get_userdata($current_user->ID); ?> $("<li id='menu-item-2091' class='menu-item menu-item-209'><a href='https://www.mysite.com/members/<?php echo $user_info->user_login; ?>'>Profile</a></li>").insertAfter("#secondary_nav #li_unique_id_2"); }); </script> 

Вы также можете использовать функцию insertBefore

Вы проверили это меню в меню тем-> для этого? Вы можете легко добавить меню, и там вы также можете настроить собственное меню. Надеюсь, вам это поможет.