Насколько я могу судить, это правильное поведение,
Представьте себе сценарий, в котором у вас есть меню с элементами верхнего уровня, страница A и страница B, к каждому из которых прикреплена категория 1 в качестве элемента подменю.
Сценарий 1
При просмотре
wp_get_nav_menu_items
,
Прикреплен к nav_menu_css_class
И где /*
- Page A = current-menu-ancestor
- Category 1 = current-menu-ancestor, current-menu-parent, current-post-ancestor, current-post-parent
- Post Example X = current-menu-item
- Page B = not related to post
- Category = current-menu-ancestor, current-menu-parent, current-post-parent
*/
appears twice in the menu under different top level items, we see;
Page B
Если вы просматриваете Почта, назовем это Category 1
, then which top level menu item should receive the Page A
сорт?
- Должна ли это быть одновременно страница А и страница Б?
- Должна ли это быть страница А?
- Должна ли это быть страница Б?
WordPress не решает ни того, ни другого. Лучше не предполагать, каковы намерения пользователей, если не указано иное, иначе, если у вас есть специальный стиль, связанный с этим классом, он будет применен ко всем пунктам меню верхнего уровня и не только приведет к неожиданным результатам.
Но если вы скажете мне, что Категория 1 появляется ТОЛЬКО под меню верхнего уровня страницы А и нигде больше, это все равно не имеет значения... ознакомьтесь с этими сценариями.
Сценарий 2
При просмотре Category 1
, Прикреплен к Post Example X
Где /*
- Page A = current-menu-ancestor
- Category 1 = current-menu-ancestor, current-menu-parent, current-post-ancestor, current-post-parent
- Post Example X = current-menu-item
- Page B = not related to post
- Category 2 = not related to post
*/
does НЕТ появляются в том же дереве меню, что и верхний уровень Page A
or any other top level tree, we see;
Category 1
Сценарий 3
При просмотре Post Example X
which is also, Прикреплен к /*
- Page A = no ancestor class, still!
- Category 1 = current-menu-ancestor, current-menu-parent, current-post-parent
- Page B = not related to post
- Category 2 = not related to post
*/
or in the same tree as the top level Page A
, мы видим;
Post Example X
Сценарий 4
При просмотре Category 1
which is also, Прикреплен к Post Example X
or in the same tree as the top level current-menu-ancestor
но где Post Example X
also appears beneath /*
- Page A = no ancestor class!
- Category 1 = current-menu-ancestor, current-menu-parent, current-post-parent
- Page B = no ancestor class!
- Category 1 = current-menu-ancestor, current-menu-parent, current-post-parent
*/
но сам наш пост, как мы видим, не содержит;
Category 1
Я пишу это просто для того, чтобы дать общее представление о том, как это работает. Далее я рассмотрю фильтры для Category 1
and Post Example X
.
Мое понимание логики процесса обработки меню немного нечеткое, возможно, кто-то еще вмешается и тем временем тоже поможет.