我需要帮助合并这两个代码:
这样:
<?php wp_nav_menu(
array(
'theme_location' => 'primary',
'container_class' => 'collapse navbar-collapse',
'container_id' => 'navbarNavDropdown',
'menu_class' => 'navbar-nav',
'fallback_cb' => '',
'menu_id' => 'main-menu',
'walker' => new rorentrep_WP_Bootstrap_Navwalker(),
)
);
?>
<?php
$section_id = empty( $post->ancestors ) ? $post->ID : end( $post->ancestors );
$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object( $locations[ 'primary' ] ); // 'primary' is our nav menu's name
$menu_items = wp_get_nav_menu_items( $menu->term_id, array( 'post_parent' => $section_id ) );
if( !empty( $menu_items ) ) {
echo '<ul class="section-submenu">';
foreach( $menu_items as $menu_item ) {
echo '<li><a href="' . $menu_item->url . '">' . $menu_item->title . '</a></li>';
}
echo '</ul>';
}
?>
更确切地说,我希望第二个代码回显的链接显示为第一个代码。
我的网页结构如下:
Business
- Sub page a
- Sub page b
- Sub page c
Private
- Sub page x
- Sub page y
- Sub page z
每当我访问孩子的商业页面时,我希望菜单只列出子页面ac,当我访问孩子的私人页面时,我希望菜单只列出子页面xz。
由于可以添加多个页面,因此我不希望定位特定的网页ID。
这主要是因为输出代码使用walker bootstrap nav(将current-classes添加到nav-items)来换行和嵌套,就像wp_nav_menu一样。
答案 0 :(得分:0)
在Walker课程中,您可以设置每个级别的行为。然后检查元素方法中的深度:start_el
class Footer extends \Walker_Nav_Menu
{
function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0)
{
if ($depth == 0) {
$output .= '
<li class="list-inline-item">
<a href="' . $item->url . '" title="' . $item->title . '">
' . $item->title . '
</a>
</li>';
}
}
function start_lvl( &$output, $depth = 0, $args = array() ) {
$output.= '';
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$output.= '';
}
}