Меню - Wp_Nav_Menu Проверить Обе Иерархии Не Удалось?

  • Автор темы Eglork
  • Обновлено
  • 22, Oct 2024
  • #1

Я вижу, что в меню существует своего рода иерархия для поиска родителя и предка.

Они ищут иерархию «категории или страницы» или иерархию «пункта меню».

Но когда оба существуют в ветке дерева глубины, они не работают должным образом.

экв.

 
• Category 1 > • Post 1
 

В дереве меню

• Page 1 • Category 1 • Page 2 • Page 2

В реальной иерархии администратора

• В этом случае, если я нахожусь в (фронт-офисе) «Категории 1», ее родительский элемент в дереве меню «Страница 1» имеет класс «текущее-меню-предок текущего-меню-родителя»

• Если я нахожусь в Пост 1 (фронт-офис) в «Категории 1», у этого есть «текущий-пост-предок, текущий-меню-родитель, текущий-пост-родитель».

Но «Страница 1», даже если не имеет прямой связи с Постом 1, все равно является родительской «категории 1». Но он не помечен как Родитель или Предок.

Я пытаюсь использовать собственный обходчик или даже фильтровать «nav_menu_css_class», чтобы найти способ проверки,

если какой-либо дочерний элемент текущего является предком, он тоже является предком. Нам нужно проверить дерево меню или реальное дерево администратора, категорию или страницу.

Eglork


Рег
31 Aug, 2016

Тем
74

Постов
170

Баллов
580
  • 25, Oct 2024
  • #2

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

Представьте себе сценарий, в котором у вас есть меню с элементами верхнего уровня, страница 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 сорт?

  1. Должна ли это быть одновременно страница А и страница Б?
  2. Должна ли это быть страница А?
  3. Должна ли это быть страница Б?

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 .

Мое понимание логики процесса обработки меню немного нечеткое, возможно, кто-то еще вмешается и тем временем тоже поможет.

 

Haifa


Рег
30 Aug, 2006

Тем
60

Постов
195

Баллов
505
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно