Wordpress 基于自定义分类归档页修改导航菜单的方法

Wordpress 基于自定义分类归档页修改导航菜单的方法,wordpress,custom-taxonomy,Wordpress,Custom Taxonomy,我有一个导航菜单,它是由wordpress中的自定义分类法生成的。默认情况下,该菜单显示父级、第一个子级和第二个子级。例如: 电影制作>制作>摄影 如果用户选择了第二个孩子电影我希望页面发生变化,导航菜单随之更新。例如,在新页面上,我希望它显示第二个孩子和下面的其他孩子 Cinematography > Lenses > Cameras > Lighting 我已经编写了代码,但正在尝试正确的方法。将菜单设置为正确点

我有一个导航菜单,它是由wordpress中的自定义分类法生成的。默认情况下,该菜单显示父级、第一个子级和第二个子级。例如:

电影制作>制作>摄影

如果用户选择了第二个孩子
电影
我希望页面发生变化,导航菜单随之更新。例如,在新页面上,我希望它显示第二个孩子和下面的其他孩子

Cinematography > Lenses
               > Cameras
               > Lighting
我已经编写了代码,但正在尝试正确的方法。将菜单设置为正确点的最佳方法是什么?我想我可以使用几个选项

  • 使用包含当前分类术语的页面URL,并从中确定菜单的其余部分

  • 在会话存储中存储某种值,以确定单击菜单项时单击的术语,并从此项设置新菜单

  • 这是正确的方法还是有更好的方法

    您应该使用获取当前术语ID:

    $term_id = get_queried_object()->term_id;
    
    然后,您可以使用基于父菜单构造菜单:

    $taxonomy_name = 'taxonomy_name';
    $term_children = get_term_children($term_id, $taxonomy_name);
    
    Obs.:用自定义分类名称替换分类名称

    get\u term\u children
    通常返回一个包含子项ID的数组:

    array(4) {
      [0]=> int(10)
      [1]=> int(20)
      [2]=> int(30)
      [3]=> int(34)
    }
    
    最后,您可以生成自定义菜单:

    <ul>
      <li>Cinematography
        <ul>
          <?php 
            foreach($term_children as $child_id) :
              $term = get_term_by('id', $child_id, $taxonomy_name); 
          ?>
          <li>
            <a href="<?php echo get_term_link($child_id, $taxonomy_name); ?>">
              <?php echo $term->name; ?>
            </a>
          </li>
          <?php endforeach; ?>
        </ul>
      </li>
    </ul>
    
    • 电影摄影

    谢谢,我需要根据自己的需要对其进行修改,但这使概念得到了完美的理解。