【WordPress】カスタムメニューのサブ項目のみ表示させる方法

プログラミング

この記事では、カスタムメニューのサブ項目のみ表示させる方法がわかります!
具体的なイメージは画像の通りです!

コードの紹介

下記のコードで実装できます!

サブ項目を表示させるには親idの確認が必要です。

親idの確認方法は後ほど解説します。

<?php
$menu_name = 'footer'; //メニューのスラッグを指定
$menu_items = wp_get_nav_menu_items($menu_name); //スラッグ名でカスタムメニュー全てを取得
$parent_id = 126; //親項目のidを指定
if ($menu_items): //カスタムメニューが存在していれば
    foreach ($menu_items as $menu_item): //カスタムメニューをループで回す
        if ($menu_item->menu_item_parent == $parent_id): //親idが$parent_idのときのみ要素を表示する
?>
<li class="p-footer-subNav__item">
    <a href="<?php echo esc_url($menu_item->url); ?>" class="c-footer-link u-hover-opacity"><?php echo esc_html($menu_item->title); ?></a>
</li>
<?php
        endif;
    endforeach;
endif;
?>

コードの詳細説明

  • $menu_name = ‘footer’
    カスタムメニューのスラッグを指定します。
    下記の部分ですね!
  • $menu_items = wp_get_nav_menu_items($menu_name)

    カスタムメニューの項目すべてを取得します
  • $parent_id = 131

    親idの指定をします。
    今回はここの指定が必須となります!
    idの確認は後ほど解説します。
  • if ($menu_items):
    foreach ($menu_items as $menu_item):
    if ($menu_item->menu_item_parent == $parent_id):

    取得したカスタムメニューが存在していれば、ループを回します。
    ループの中で親idが指定の値の場合のみ要素を表示させていきます
  • $menu_item->url

    カスタムメニューのurlを取得できます。
  • $menu_item->title

    カスタムメニューの名前を取得できます。

親要素のid確認方法

下記コードをコピペして使ってみてください!

今回は親項目「診療案内L」の子項目を表示したいので、「診療案内L」のidを確認します。

このidを変数$parent_idに指定してみてください!

$menu_name = 'footer';
$menu_items = wp_get_nav_menu_items($menu_name);

if ($menu_items):
    foreach ($menu_items as $menu_item):
        // メニュー項目のIDを表示
        echo 'メニュー項目: ' . esc_html($menu_item->title) . ' - ID: ' . esc_html($menu_item->ID) . '<br>';
    endforeach;
else:
    echo 'メニューが見つかりませんでした。';
endif;

まとめ

以上、カスタムメニューのサブ項目のみ表示させる方法を解説しました。

流れとしては

  1. 親項目のidを確認する
  2. カスタムメニューをループで表示させる
  3. 表示させる条件に親項目のidが 1. で確認した数値と一致する場合という条件を入れる

となります。

WordPressのカスタマイズ方法として押さえておきましょう!

タイトルとURLをコピーしました