В Wordpress стандартный метод меню к каждому элементу создаёт уникальный ID по нему можно отсеять любой элемент с помощью DOMDocument. Или построить элементы в нужном порядке.
Например мне нужно было:
1. Вырезать из всего меню только раздел Услуги.
2. Активный подраздел Услуги делать первым в списке, а так же ещё ряд подразделов (в зависимости от активного подраздела) показывать под активным подразделом. Все оставшиеся отображать ниже.
3. В активном подразделе отображать вложенные ссылки.
4. Если посетитель зашел в О компании или Контакты то просто отображать весь список услуг.
В итоге получилось так (часть кода):
$menu = wp_nav_menu(['menu' => 15, 'echo' => false]);
$dom = new DOMDocument();
$menu = mb_convert_encoding($menu, 'HTML-ENTITIES', 'utf-8');
$dom->loadHTML($menu);
$elem = $dom->getElementById('menu-item-812');
$services= $elem->getElementsByTagName('ul');
$services->item(0)->setAttribute("class", "menu_lists");
//$services->removeAttribute("sub-menu");
// Показываем весь раздел с услугами
echo $dom->saveHTML( $services->item(0) );
//Таким образом можно и удалить какой то элемент:
$elem = $dom->getElementById('menu-item-890');
$elem->parentNode->removeChild($elem);