我一直在寻找。和搜索。我找到了很多很多获取子菜单的方法,但它们似乎都包括<;li>;和课程。我不想那样。我想获取特定菜单子导航页面的数组页面ID。
wp\\u list\\u页面让我很接近,但它似乎是从wp中的页面区域而不是导航中获取这些页面。我从nav中删除了“Concrete”,因为它使用wp\\U list\\u页面的顺序不正确。但具体情况仍然存在。
wp\\u list\\u页面生成了一系列完整的代码,这些代码似乎无法分解成我想要的样子。
我只需要数组中的子菜单页面ID。它将是9个ID。
下面是我的目标菜单项“menu-item-127”。我想获取它的subnav的页面ID。我不想使用<;获取菜单数组;li><;a>;等
<li id="menu-item-127" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-127"><a href="/services/">Services</a>
<ul class="sub-menu">
<li id="menu-item-511" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-511"><a href="/services/construction/">Construction</a></li>
<li id="menu-item-514" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-514"><a href="/services/environmental/">Environmental</a></li>
<li id="menu-item-517" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-517"><a href="/services/safety-management/">Safety Management</a></li>
<li id="menu-item-515" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-515"><a href="/services/mechanical/">Mechanical</a></li>
<li id="menu-item-510" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-510"><a href="/services/civil-construction/">Civil Construction</a></li>
<li id="menu-item-520" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-520"><a href="/services/concrete/">Concrete</a></li>
<li id="menu-item-516" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-516"><a href="/services/medical/">Medical</a></li>
<li id="menu-item-512" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-512"><a href="/services/consulting/">Consulting</a></li>
<li id="menu-item-513" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-513"><a href="/services/energy-fueling/">Energy/Fueling</a></li>
</ul>
</li>
最合适的回答,由SO网友:Ashok Kumar Nath 整理而成
您可以尝试以下功能:
function wpse_290320_get_page_ids_from_menu( $menu_id, $submenu_id )
{
$menus = wp_get_nav_menu_items( $menu_id );
$pages = array();
foreach( $menus as $menu )
{
if( $submenu_id == $menu->menu_item_parent && \'page\' == $menu->object )
{
$pages[] = $menu->object_id;
}
}
return $pages;
}
$menu_id = 26;
$submenu_id = 3298;
$pages = wpse_290320_get_page_ids_from_menu( $menu_id, $submenu_id );
如果从仪表板>外观>菜单中选择菜单,然后在URL中,可以找到菜单ID。例如,如果URL为
http://single.dev/wp-admin/nav-menus.php?action=edit&menu=26 然后26是菜单ID。
对于子菜单ID,根据该示例,127是子菜单ID。