E_K Asked:2020-10-07 06:00:32 +0000 UTC2020-10-07 06:00:32 +0000 UTC 2020-10-07 06:00:32 +0000 UTC 如何在页面上显示子菜单? 772 网站上只有一个菜单。(其中一段的例子) Судостроение (страница) Танкеры (рубрика) Сухогруз (рубрика) 如何在另一个地方的“造船”页面上显示其子菜单? wordpress 2 个回答 Voted Best Answer KAGG Design 2020-10-07T18:09:29Z2020-10-07T18:09:29Z 我们需要再次显示菜单,使用我们的过滤器只截断current-menu-item它下面的那些项目。将此代码添加到您的页面模板。 add_filter( 'wp_nav_menu_objects', 'wp_nav_menu_objects_filter', 10, 2 ); $args = array( 'menu' => 'Main', ); wp_nav_menu( $args ); /** * Filters the sorted list of menu item objects before generating the menu's HTML. * * @param array $sorted_menu_items The menu items, sorted by each menu item's menu order. * @param stdClass $args An object containing wp_nav_menu() arguments. * * @return array */ function wp_nav_menu_objects_filter( $sorted_menu_items, $args ) { if ( 'Main' !== $args->menu ) { return $sorted_menu_items; } $items = array(); $current_item = null; foreach ( $sorted_menu_items as $item ) { if ( $current_item && intval( $item->menu_item_parent ) === $current_item ) { $items[] = $item; continue; } if ( in_array( 'current-menu-item', $item->classes, true ) ) { $current_item = $item->ID; // $items[] = $item; continue; } } return $items; } 你可以在我的测试站点的主页上看到这段代码的结果:http: //test.kagg.eu/ Иванцов Дмитрий 2020-07-24T15:05:42Z2020-07-24T15:05:42Z 感谢这段代码,但它没有帮助我,因为 我在菜单中有几个项目,每个项目都有自己的子菜单(一般来说,有几个嵌套级别)和只有标准类(每个人都一样,不是唯一的)。我对其进行了一点修改,最终得到了显示某个菜单项的所有子项(任何嵌套)的东西。按身份证。如果有人需要,请... 例如,如果所需的菜单项 ID 为 37 //Добавим фильтр который оставит только подпункты определенного меню с ID=37 add_filter('wp_nav_menu_objects', 'wp_nav_menu_objects_filter', 10, 2); //Вывод отфильтрованного меню $args = array( 'menu' => 'Top Menu', ); wp_nav_menu($args); /** * Filters the sorted list of menu item objects before generating the menu's HTML. * * @param array $sorted_menu_items The menu items, sorted by each menu item's menu order. * @param stdClass $args An object containing wp_nav_menu() arguments. * * @return array */ // фильтр который оставит только подпункты определенного меню с ID=37 function wp_nav_menu_objects_filter($sorted_menu_items, $args) { if ('Top Menu' !== $args->menu) { return $sorted_menu_items; } $items = array(); $parents = array(); $parents[] = 37; //ID пункта нашего меню чьё подменю надо вывести. foreach ($sorted_menu_items as $item) { if (in_array(intval($item->menu_item_parent), $parents, true)) { $items[] = $item; $parents[] = $item->ID; continue; } } return $items; }
我们需要再次显示菜单,使用我们的过滤器只截断
current-menu-item它下面的那些项目。将此代码添加到您的页面模板。你可以在我的测试站点的主页上看到这段代码的结果:http: //test.kagg.eu/
感谢这段代码,但它没有帮助我,因为 我在菜单中有几个项目,每个项目都有自己的子菜单(一般来说,有几个嵌套级别)和只有标准类(每个人都一样,不是唯一的)。我对其进行了一点修改,最终得到了显示某个菜单项的所有子项(任何嵌套)的东西。按身份证。如果有人需要,请...
例如,如果所需的菜单项 ID 为 37