これらの 2 つのコードを組み合わせるには、助けが必要です。
これ:
<?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>';
}
?>
より正確には、2 番目のコードがエコーするリンクを最初のコードとして表示する必要があります。
私のページの構造は次のようになります。
Business
- Sub page a
- Sub page b
- Sub page c
Private
- Sub page x
- Sub page y
- Sub page z
ビジネスの子ページにアクセスするたびに、メニューにサブページ ac のみをリストするようにし、プライベートの子ページにアクセスするときは、メニューにサブページ xz のみをリストするようにします。
複数のページを追加できるので、特定のページ ID をターゲットにしたくありません。
これの主な理由は、出力コードが wp_nav_menu のように walker ブートストラップ nav (現在のクラスを nav-items に追加) を使用してラップおよびネストするためです。