ど素人から毛を生やす。<延>

固定ページの子ページリスト

Web > WordPress > 固定ページ 2014年8月11日(最終更新:3年前)

このページは2014.8.11に作成されています。時代の流れとそぐわない可能性があったり、僕が今以上のど素人だった頃の記事だったりするので、新しい記事を探してみるのも良いかもしれません。

更新版! → 記事が所属する固定ページの多階層リストを出力する

どもです。
貧血なうの餅。です。

超頭痛ぇ…(^ρ^)

 

そんなことよりWordPress。

今回のお題は、「サイトの静的部分を固定ページで作るが、子ページが存在する親ページは子ページの概要をリスト化する」とのこと。

カスタム投稿でやった方が手っ取り早いのではなかろうかと思いつつ、リストを出力してみました。

<?php
global $post;
if ( is_page() && $post->post_parent ) {
$pageParent = $post->post_parent;
} else {
$pageParent = $post->ID;
};

$pagesArr = array(
  'posts_per_page' => -1 ,
  'post_type' => 'page' ,
  'order' => 'ASC' ,
  'post_parent' => $pageParent
);
$pageData = query_posts($pagesArr);

foreach($pageData as $post) {
	setup_postdata($post);
	if ( $post == 1 ) { $more = 0; }
?>

<section>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="post"><?php the_content('',FALSE,''); ?>
<a href="<?php the_permalink() ?>" class="read_more">詳細を見る</a>
</div>
</section>
<?php } wp_reset_query(); ?>

これでおkです。
以下、解説。

<?php
global $post;
if ( is_page() && $post->post_parent ) {
$pageParent = $post->post_parent;
} else {
$pageParent = $post->ID;
};

$pagesArr = array(
  'posts_per_page' => -1 ,
  'post_type' => 'page' ,
  'order' => 'ASC' ,
  'post_parent' => $pageParent
);
$pageData = query_posts($pagesArr);

固定ページかつ親ページが存在する場合、$pageParentに親IDを入れます。
そうでなかった場合、$pageParentには自分のIDを入れます。
今回の目的だとelseの方だけで良いですが、こうしておくことでサイドバーなんかにも応用可能です。

で、post_typeをpageにしてpost_parentを先ほど設定した$pageParentに。
query_postsでループ情報を書き換えます。

foreach($pageData as $post) {
	setup_postdata($post);
	if($post==1){$more=0;}
?>

<section>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="post"><?php the_content('',FALSE,''); ?>
<a href="<?php the_permalink() ?>" class="read_more">詳細を見る</a>
</div>
</section>
<?php } wp_reset_query(); ?>

そしてループを記載します。
これで目標達成ですが、このままでは表示される内容に制限がかかるので、もう一手間。

setup_postdata($post);で、the_permalink();などが使用可能になります。
if ($post==1){$more=0;}で、moreが使用可能になります。

ループ内容についてはお好みで。
query_postsを使ったので最後にwp_reset_query();をくっつけて完成です。

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった  (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)