【WordPress】get_the_ID()を用いて子ページの記事一覧を取得する方法
今回は、ある固定ページを親として、それに連なる固定ページの記事一覧を取得する方法です。
以下のような形を目指します。
一番上の「page」は「page.php」を表します。

get_pagesの引数にget_the_ID()を使う
get_pages()は、ざっくり言うと固定ページの情報を取得する関数です。
そして、get_pages()の引数の1つであるchild_ofという引数について、「’child_of’=>親ページのID=get_the_ID()」とすることで、現在いるページ(親ページ)の子ページ一覧を取得することが出来ます。
以下を記述すると、一覧を取得できます。
<?php $my_getposts = get_pages(array(
'child_of' => get_the_ID()//現在のページID
));?>
<?php foreach($my_getposts as $post):?>
<?php setup_postdata($post);?>
<div class ="child-post">
<!--タイトル・概要 -->
<h2>
<a href = "<?php echo $permalink;?>"><?php the_title();?></a>
<?php the_excerpt();?>
</h2>
</div><!--end of .child-post -->
<?php endforeach; wp_reset_postdata();?>
更に、以下の通り記述すると、現在のページが親ページか子ページかを判断して処理を分けることが出来ます。
親ページの場合は記事の一覧。
子ページの場合はその内容を表示する、という場合は以下の通り記述します。
最初のif文で親ページを持っているか否かの判定を行っています。
<?php if($post -> post_parent:?>
<?php the_content();?>
<?php else:?>
<?php $my_getposts = get_pages(array(
'child_of' => get_the_ID()//現在のページID
));?>
<?php foreach($my_getposts as $post):?>
<?php setup_postdata($post);?>
<div class ="child-post">
<!--タイトル・概要 -->
<h2>
<a href = "<?php echo $permalink;?>"><?php the_title();?></a>
<?php the_excerpt();?>
</h2>
</div><!--end of .child-post -->
<?php endforeach; wp_reset_postdata();?>
<?php endif;?>
子ページを表示すると、以下のように表示されます。
親ページと同様に「page.php」が適用されていますが、子ページの内容(the_content()の内容)のみが出力され、分岐していることが分かります。

ディスカッション
コメント一覧
まだ、コメントがありません