• はじめまして。
    いつもお世話になります。

    wp_list_pagesでのメニューの取得方法について質問です。
    乱分であることをお許し下さい。

    現在、wordpressであらたにテーマ制作中なんですが、そこで解決出来ない問題が出てきました。
    それは、wp_list_pagesでページメニューを出力しているのですが、
    そのページメニューが2種類あり、この2種類を別々に出力したいと考えました。

    ■メインメニュー     ■エリアメニュー
     メニュー1        エリア1
     メニュー2        エリア2
     メニュー3        エリア3

    と行った形にしたと思いました。

    そこで、wp_list_pagesの引数を指定して、
    wp_list_pages(“exclude=’.$postp.’&depth=-1&date_format=n/j&title_li=”)

    wp_list_pages(‘child_of=207&depth=-1&title_li=’)
    を作りました。
    すると、下のメニュー(エリアメニューのIDが207)はエリアの下層ページのみが出力されて、問題ありません。
    しかし、上のメニューはエリアメニューの下層ページも含めて出力してしまいます。

    そこで、exclude=を使用して表示しないように出来ないか?と考えました。
    そうると、エリアメニューの下層ページのIdが必要になると思い、下記のコードで取り出せないかと考えたのですが・・・
    <?php $posts = get_posts(‘post_parent=207&post_type=page’);?>
    <?php foreach($posts as $post):setup_postdata($post);?>
    <?php $postp=$post->ID ;?>
    <?php endforeach;?>
    これだと下層ページのIDを取りだすことは可能なんですが、肝心のexclude=に持って行った時に上手くいきません。

    配列にして複数指定する必要があるのかと思ったのですが、方法が分りませんでした。
    それとも、難しく考えすぎなんでしょうか?

    どなたかご指導頂けないでしょうか?
    長文にも関わらず最後までお読み頂きありがとうございます。
    宜しくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    upupupさん、こんにちは。

    メインメニューに「エリアメニュー」を表示するか否かによって、多少コードが変わります。

    必要ないのであれば、exclude_tree=207で解決するかと思いますが、エリアメニューは表示し、エリアメニューの子孫のみ非表示にしたいのであれば、exclude_treeパラメータのにエリアメニューの子ページのIDをカンマ繋ぎで指定する必要があります。

    トピック投稿者 upupup

    (@upupup)

    jim912様

    ご返信が遅くなり申し訳ありません。
    返信ありがとうございます。

    exclude_tree=で解決出来ました!!
    ありがとうございます。

    難しく考えすぎていたようです。
    でもexclude_tree=と言うものが2.7から追加されていたとは知りませんでした。
    どうもありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「wp_list_pagesでのリストメニュー表示について」には新たに返信することはできません。