php - 仅显示三级 Wordpress 菜单

标签 php css wordpress

我在这个网站上工作:http://new.leicesterymca.co.uk/youth-community/our-work/

在此页面上,您会看到我在顶部有一级菜单,然后我有 PHP 代码说明是否有二级菜单,然后在蓝色 strip 中显示二级菜单。

但现在我需要对第 3 级菜单(在页面左侧)使用相同的菜单。所以本质上我需要代码来查看是否有任何第 3 级页面,如果有则在此处显示第 3 级页面。我的第二级代码是:

<?php
  $menu = wp_nav_menu(
      array (
        'theme_location' => 'header-menu',
        'sub_menu' => true,
        'echo' => FALSE,
        'fallback_cb' => '__return_false'
      )
  );
  if ( ! empty ( $menu ) )
  {
    echo '<div class="sub-nav-container-full">
          <div class="container">
          <div class="sub-page-menu">';
    echo $menu;
    echo '</div></div></div>';
  }
?>

所以,我假设我可以使用类似的代码,但我不知道如何将其仅瞄准第 3 级?

如果有人能帮忙,那就太好了! :)

谢谢,肖恩。

EXTRA - 如果有帮助的话,我的函数文件中也有这段代码......

// FUNCTION FOR SETTING UP SUB MENU PAGES

// add hook
add_filter( 'wp_nav_menu_objects', 'my_wp_nav_menu_objects_sub_menu', 10, 2 );

// filter_hook function to react on sub_menu flag
function my_wp_nav_menu_objects_sub_menu( $sorted_menu_items, $args ) {
  if ( isset( $args->sub_menu ) ) {
    $root_id = 0;

// find the current menu item
foreach ( $sorted_menu_items as $menu_item ) {
  if ( $menu_item->current ) {
    // set the root id based on whether the current menu item has a parent or not
    $root_id = ( $menu_item->menu_item_parent ) ? $menu_item->menu_item_parent : $menu_item->ID;
    break;
  }
}

// find the top level parent
if ( ! isset( $args->direct_parent ) ) {
  $prev_root_id = $root_id;
  while ( $prev_root_id != 0 ) {
    foreach ( $sorted_menu_items as $menu_item ) {
      if ( $menu_item->ID == $prev_root_id ) {
        $prev_root_id = $menu_item->menu_item_parent;
        // don't set the root_id to 0 if we've reached the top of the menu
        if ( $prev_root_id != 0 ) $root_id = $menu_item->menu_item_parent;
        break;
      } 
    }
  }
}

$menu_item_parents = array();
foreach ( $sorted_menu_items as $key => $item ) {
  // init menu_item_parents
  if ( $item->ID == $root_id ) $menu_item_parents[] = $item->ID;

  if ( in_array( $item->menu_item_parent, $menu_item_parents ) ) {
    // part of sub-tree: keep!
    $menu_item_parents[] = $item->ID;
  } else if ( ! ( isset( $args->show_parent ) && in_array( $item->ID, $menu_item_parents ) ) ) {
    // not part of sub-tree: away with it!
    unset( $sorted_menu_items[$key] );
  }
}

return $sorted_menu_items;
  } else {
return $sorted_menu_items;
  }
}

最佳答案

看来您的问题与这个问题类似,我认为您也可以使用它!

https://wordpress.stackexchange.com/questions/45161/3-level-deep-navigation-menu-not-showing-all-levels

关于php - 仅显示三级 Wordpress 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41808236/

相关文章:

Php Gd 旋转图像

javascript - Textarea 类型特殊字符

javascript - 如何在javascript中创建一个高于其他标签的html标签?

javascript - 如何让雨水堆积在文本上并浇在网页上

php - 在 Woocommerce 商店页面中仅显示特色产品

php - 无法在 C :\wamp\www\zr\core\functions\users. php 中重新分配自动全局变量 _POST

php - 3 Drop Downs 链使用 ajax mysql

带有两个文件夹的PHP页面登录

php - 滚动时如何让侧边栏对齐到顶部?

html - 为什么在添加文本时 HTML 页面的布局会发生变化