Php WordPress菜单:单击父菜单项时,仅显示该链接的子导航子项
我的WordPress导航功能有问题。我有以下功能,可从管理员中提取菜单项:Php WordPress菜单:单击父菜单项时,仅显示该链接的子导航子项,php,wordpress,function,menu,navigation,Php,Wordpress,Function,Menu,Navigation,我的WordPress导航功能有问题。我有以下功能,可从管理员中提取菜单项: function cr_get_menu_items($menu_location) { $locations = get_nav_menu_locations(); $menu = get_term($locations[$menu_location], 'nav_menu'); return wp_get_nav_menu_items($menu->term_id); } 在我的导航
function cr_get_menu_items($menu_location)
{
$locations = get_nav_menu_locations();
$menu = get_term($locations[$menu_location], 'nav_menu');
return wp_get_nav_menu_items($menu->term_id);
}
在我的导航模板中,我使用此函数仅拉入父项,如下所示:
<?php $nav = cr_get_menu_items('navigation_menu') ?>
<?php foreach ($nav as $link):
if ($link->menu_item_parent == 0) : ?>
<a class="main-nav" href="<?= $link->url ?>"><?= $link->title ?></a>
<?php endif; endforeach; ?>
<?php $nav = cr_get_menu_items('navigation_menu') ?>
<?php foreach ($nav as $link):
if ($link->menu_item_parent !== 0) : ?>
<a href="<?= $link->url ?>"><?= $link->title ?></a>
<?php endif; endforeach; ?>
我尝试制作一个子导航,显示如下子项:
<?php $nav = cr_get_menu_items('navigation_menu') ?>
<?php foreach ($nav as $link):
if ($link->menu_item_parent == 0) : ?>
<a class="main-nav" href="<?= $link->url ?>"><?= $link->title ?></a>
<?php endif; endforeach; ?>
<?php $nav = cr_get_menu_items('navigation_menu') ?>
<?php foreach ($nav as $link):
if ($link->menu_item_parent !== 0) : ?>
<a href="<?= $link->url ?>"><?= $link->title ?></a>
<?php endif; endforeach; ?>
这会拉入所有子菜单项。我正在构建的导航的工作方式是:单击父菜单项,子导航将显示该父菜单项的所有子菜单项。隐藏/显示功能都是JS
有没有办法改变我必须为特定的父菜单项只拉入子菜单项的功能?感谢您的帮助/指导
有没有办法改变功能,我只能让孩子们参与进来
对于特定的父菜单项
为了这个目的,是的,有
尝试以下功能
(替换现有的cr\u get\u菜单项()
功能):
用法示例:
$nav = cr_get_menu_items( 'navigation_menu' ); // Get all menu items.
$nav = cr_get_menu_items( 'navigation_menu', 0 ); // Get menu items whose parent ID is 0
更新
在我重新阅读您的问题后,这是您可能需要的函数
:
// $items is the menu items array that you retrieved using `cr_get_menu_items()`,
// or other functions which return valid `nav_menu` items.
function cr_get_submenu_items( array $items, $parent ) {
$parent = (int) $parent;
$list = [];
foreach ( $items as $item ) {
if ( $parent === (int) $item->menu_item_parent ) {
$list[] = $item;
}
}
return $list;
}
更新#2
下面是您将/可以如何使用cr\u get\u menu\u items()
以及cr\u get\u submenu\u items()
:
您必须检查db\u id
和菜单项\u父项