サポート » テーマ » 子ページのリスト一覧の出力

  • こんにちは。よろしくお願いいたします。
    過去の本フォーラムの記事
    親ページに属する全子ページのタイトルと本文を表示
    を参考に、その記事を少し引用させて頂いて説明しますと

     ├・japan
     │  ├・kyoto
     │  ├・sapporo
     │  ├・tokyo
     │  └・hakata

    kyoto、sapporoの各子ページのボリュームが少ないために、子ページの本文をdivで囲みpost_nameをアンカーとして、親ページjapan内に子ページを埋め込み表示させました。

    <?php
    if ( $post->post_parent == 0 ) {
    	$child_posts = get_posts( 'numberposts=-1&order=ASC&orderby=post_title&post_type=page&post_parent=' . $post->ID );
    	if ( $child_posts ) {
    		foreach ( $child_posts as $child ) {
    			$c_postname = $child->post_name ;
    			$c_content = get_extended( $child->post_content );
    			$c_content = apply_filters( 'the_content', $c_content['main'] );
    ?>
    
    <div id="<?php echo $c_postname; ?>">
    <?php echo $c_content; ?>
    </div>
    
    <?php
    		}
    	}
    }
    ?>

    この例ですと、japan本文中に

    <div id="kyoto">kyoto本文</div>
    <div id="sapporo">sapporo本文</div>
    ~

    が差し込まれる出力になります。

    そしてここからが本題なのですが、サイトの共通のメニューを考えるにあたり、同じく上の例で例えますと

    <ul>
    	<li><a href="japanのlink">japan</a>
    		<ul>
    			<li><a href="japanのlink#kyoto">kyoto</a></li>
    			<li><a href="japanのlink#sapporo">sapporo</a></li>
    			<li><a href="japanのlink#tokyo">tokyo</a></li>
    			<li><a href="japanのlink#hakata">hakata</a></li>
    		</ul></li>
    </ul>

    な感じのコードを出したいです。
    親ページから子ページのリストの出力なら先のコードを少しいじればできたのですが、どのページからでも見られる共通メニューとしては私の力不足でどうにも・・・
    どなたかご教示くだされば幸いです。よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • なんか、普通のやりかたな気がしますけど、私が勘違いしてるといけないので1点確認です。

    共通メニューということなんですけど、どこに出したいんですか?
    サイドバーですか?
    ページのヘッダとかフッタとかですか?
    それとも本文中に埋め込みたいのですか?

    <ul><?php wp_list_pages('title_li=' ); ?></ul>

    というテンプレートタグの基本的な記述ではなくてですかね?

    モデレーター jim912

    (@jim912)

    piezoさん、こんにちは。

    出力する共通メニューは、japanのものだけで良いのでしょうか。
    一応、それであればjapanのIDだけ分かればできます。
    japanのIDが5だった場合、japanのlinkは

    get_permalink( 5 );

    で取得できます。
    それらの子ページは、上記の例でもあるように、

    get_posts( 'numberposts=-1&order=ASC&orderby=post_title&post_type=page&post_parent=5' );

    で取得できますから、子ページのリストをループさせて、japanのlinkと組み合わせてあげれば表示させることができます。

    もし、親ページ毎に共通メニューを変えたい場合は、選択ページの一番上の親のID取得方法あたりが参考になるかと思います。japanだけでなく、全ての親ページについて同様のリストを出したい場合は、post_parent=0でget_postsを行って親ページのリストをループをさせながら、子ページのget_postsを行えば実現可能ですね。

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