Check in walker se a página atual for descendente

Espero que isso não seja um dup – eu não consegui encontrá-lo!

Meu objective é, em meu walker personalizado, acrescentar a class de current-menu-ancestor a um item de menu se for um antepassado (independentemente do quão profundo) da página / publicação em que o usuário esteja atualmente.

Eu estava esperando que algo assim faria o truque: (no meu wp_menu_item_classs_by_context() equivalente)

  if ($post->post_parent) { // Does the post have parents at all? $ancestors=get_post_ancestors($post->ID); // Get all ancestors $root=count($ancestors)-1; // Get the key of the top-level one $parent = $ancestors[$root]; // Top level ancestor ID // Finally, see if the ancestor ID is the same as the menu_item's post ID if($parent == $menu_item->ID) $classs[] = "current-menu-ancestor"; } 

Para nenhum proveito.

Tenho certeza de que não é muito mais complexo do que isso, mas eu não sou particularmente bem versado no WordPress idiossincráticos!

Solutions Collecting From Web of "Check in walker se a página atual for descendente"

Parece-me, você está tentando obter os antepassados ​​pela postagem atual, enquanto você provavelmente deve obter os antepassados ​​de acordo com o item do menu. Por quê? Como a configuração de uma hierarquia no menu não altera a postagem real, especialmente a propriedade post_parent não será alterada – em resumo: (outro) tipo de publicação e item de menu (o que realmente é um tipo de publicação também) as mudanças relacionadas não são mutuamente imitou.

E, afinal, você pode ter tipos de publicação hierárquicos e não hierárquicos em um menu, para não mencionar, todos os outros tipos de itens de menu que podem ser definidos. Tipos de postagem não hierárquicos, por exemplo, enquanto eles têm a coluna post_parent no database, na verdade não há uma maneira integrada de configurá-lo, não faria sentido de qualquer maneira, já que não é suposto ter uma hierarquia. Nem mesmo entrando nos outros tipos aqui, mas dizer que muitos deles não são realmente capazes – ou pelo menos não se destinam a ter um como eles são construídos – de ter uma hierarquia – com exceção de fazer parte de um menu, mas do que – como disse – a informação é parte do menu, não o item colocado no menu.

Por último, mas não menos importante, mesmo se você estiver trabalhando com um tipo de publicação hierárquico, você provavelmente deseja obter os antepassados ​​pelo item do menu, porque, caso contrário, você teria que imitar a hierarquia entre o tipo de publicação e o menu, o que significa que você deve fazer todas as a mudança de hierarquia duas vezes. Quando o seu menu depende apenas de um tipo de publicação hierárquico, então você provavelmente deve buscar uma solução que leve isso em conta e gere seu menu de acordo com a hierarquia automaticamente – para poupar-lhe a tarefa de fazê-lo manualmente, enquanto você pode automatizá-lo.