サポート » 使い方全般 » ページリストの表示について

  • サイドバーにページのメニューを表示させたいのですが、
    色々調べたものの、どうしても分からず初めてご質問させて頂くことにしました。
    上手くお伝え出来ているか分からず、長文となってしまいますがすみません。

    【現在の表示】
    ■Aページを表示している時
    ※Aページと、Aページに属する子ページ、孫ページ、ひ孫ページ、全てが表示される

    Aページ
    ├A-1
    ├-A-1-1
    ├–A-1-1-1
    ├–A-1-1-2
    ├A-2
    ├-A-2-1
    ├-A-2-2
    ├-A-2-3
    ├-A-2-4
    ├A-3

    【現在のソース】
    現在のコードだと、Aページに対する、子ページ、孫ページ、ひ孫ページと
    Aページに属するページが全て表示され、サイドメニューが非常に長くなってしまいます

    <?php
    $ancestor = array_pop(get_post_ancestors($post->ID));
    if (is_page() && $post->post_parent ) {
    $parent=$post->post_parent;
    } else {
    $parent=$post->ID;
    }
    $ul_top_title = get_the_title($ancestor);
    $ul_top_url = get_permalink($ancestor);
    ?>
    <li class="page_item" ><a href="<?php echo $ul_top_url; ?>"><?php echo $ul_top_title; ?></a></li>
    <?php
    if(empty($ancestor)) { wp_list_pages('depth=0&sort_column=menu_order&child_of='.$post->ID.'&title_li=');}
    else { wp_list_pages('depth=0&sort_column=menu_order&child_of='.$ancestor.'&title_li=');}?>
    </ul>
    </li>
    </ul>

    【希望の表示】
    現在のコードだと、Aページに属する子、孫、ひ孫ページ全てのページが表示されてしまうので、
    それぞれ子、孫、ひ孫があるページを選択した際にだけ、
    それぞれの子、孫、ひ孫が表示されてほしいというのが希望です。

    ■Aページを表示している時
    ※Aページと、Aページに対する子ページだけを表示

    Aページ
    ├A-1
    ├A-2
    ├A-3

    ■A-1ページを表示している時
    ※Aページと、Aページに対する子ページと、A-1に対する孫ページだけを表示

    Aページ
    ├A-1
    ├-A-1-1
    ├A-2
    ├A-3

    ■A-1-1ページを表示している時
    ※Aページと、Aページに対する子ページと、A-1に対する孫ページと、A-1-1に対するひ孫ページだけを表示

    Aページ
    ├A-1
    ├-A-1-1
    ├–A-1-1-1
    ├–A-1-1-2
    ├A-2
    ├A-3

    ■A-2を表示している時
    ※Aページと、Aページに対する子ページと、A-2に対する孫ページだけを表示

    Aページ
    ├A-1
    ├A-2
    ├-A-2-1
    ├-A-2-2
    ├-A-2-3
    ├-A-2-4
    ├A-3

    ■Bページを表示している時
    ※Bページと、Bページに対する子ページだけを表示
    Bページ
    ├B-1
    ├B-2
    ├B-3

    フォーラムなどで下記を拝見させて頂きましたが、
    解決せず、PHPも初心者の為、分かりません。

    http://ja.forums.wordpress.org/topic/1056?replies=10
    http://ja.forums.wordpress.org/topic/3931?replies=12

    WordPressのバージョンは、2.8.6です。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • PHPが分からないのであれば、テンプレートタグwp_list_pagesを使ったほうがいいと思いますよ。現在表示しているページや親ページに自動でクラス名がつきますので、CSSで表示・非表示が調整できます。

    追記、すみませんすでに使ってるんですね。
    こんな感じのCSSで行けると思いますが。。。
    li ul { display: none; }
    li.current_page_item ul { display: block; }
    li.current_page_ancestor ul { display: block; }

    ご返信ありがとうございます。
    出来れば、cssで表示、非表示の調整を行わずにしたいのですが…。
    難しいでしょうか?

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