サイト内の現在の場所に基づいて変化するサイドバー ナビゲーション メニューを作成しようとしています。
ナビゲーション全体は次のようになります。
- 家
- 私たちに関しては
- レベル 1a
- レベル 1b
- レベル 1c
- プログラム
- レベル 1d
- レベル 2a
- レベル 2b
- レベル 1e
- レベル 2c
- レベル 2d
- レベル 1f
- レベル 1d
- お問い合わせ
現在、カスタム ナビゲーション メニューを使用してホームページのメニューを作成しているため、管理パネルのメニュー リンクからカスタム メニューを編集できます。彼らは連絡先ページにサイドバーのナビゲーション メニューを望んでいません。
私たちについてのページでは、サイドバーのナビゲーションを次のようにしたいと考えています。
- レベル 1a
- レベル 1b
- レベル 1c
プログラムページでは、次のように表示したいと考えています。
- レベル 1d
- レベル 1e
- レベル 1f
レベル 1d ページでは、次のように表示する必要があります。
- レベル 1d
- レベル 2a
- レベル 2b
- レベル 1e
- レベル 1f
子ページが現在の親に対してのみ表示されるようにします。
レベル 2a のページでは、レベル 1d のページと同じように表示する必要があります。
- レベル 1d
- レベル 2a
- レベル 2b
- レベル 1e
- レベル 1f
また、注意すべき重要なことは、現在のページのリスト項目を残りの項目とは異なるスタイルにする必要があることです。そのため、そのリスト項目ごとにある種の現在のページ項目クラスを追加する必要があります。時間。
これまでのところ、レベル 1d では現在の親の子のみを印刷できませんでした。wp_list_pages を使用すると、深さを設定できますが、現在の親だけに制限することはできません。すべての兄弟の子も出力します (つまり、レベル 1d の場合、現在アクティブな親の下にあるレベル 2 の子だけではなく、それぞれの親の下にあるすべてのレベル 2 の子を出力します)。
どうすればいいですか?
<?php $current_section = "";
if(is_front_page()):
$current_section = "home";
$nav_args = array(
'theme_location' => $current_section,
'container' => 'nav',
'container_class' => 'side-nav'
);
wp_nav_menu( $nav_args );
else:
endif;?>
これは私が現時点で持っているものです。とにかく動作していなかったので、else ブロック内のすべてのコードを削除しました。