web関連
【wordpress】親子関係を持った固定ページの一覧を出す方法
親固定ページ内で親含む子固定ページの一覧出力、
子固定ページ内で親含む子固定ページの一覧を出力しようとしたときの備忘録
※孫までは試してない
親子関係を持った固定ページを一覧で出力するコード
<?php if(is_page()): //固定ページの時表示 始まり ?>
<?php if (have_posts()) : while (have_posts()) : the_post();
// 親ページのIDを取得
$parent_id = $post->post_parent;
// ↓現在のページが親か子かの条件分岐
if ($parent_id) { // 子ページの時
$parent = $parent_id;
} else { // 親固定ページの時
$parent = get_the_ID();
}
$children_array = get_children("post_type=page&post_parent=" .$parent );
if ( count( $children_array ) > 0 ) : //子固定ページ持ってる時一覧を出力する
?>
<ul>
<?php
// 親ページのタイトルを取得
$parent_title = get_post($parent_id)->post_title;
// 親ページのリンクを取得
$parent_url = get_permalink($parent_id);
?>
<li>
<a href="<?php echo $parent_url; ?>">
<?php echo $parent_title; ?>
</a>
</li>
<?php foreach ( $children_array as $child ) ://子固定ページ一覧を出力する
//子固定ページのリンク
$url = esc_url(get_permalink( $child->ID ));
//子固定ページの見出し
$title = esc_html( $child->post_title );
?>
<li>
<a href="<?php echo $url; ?>"><?php echo $title; ?></a>
</li>
<?php endforeach; ?>
</ul>
<?php else://親固定ページしかない時 ?>
親固定ページしかないよ
<?php endif; ?>
<?php endwhile; endif; ?>
<?php endif; //固定ページの時表示 終わり ?>
不格好かも知れないけどとりあえず動いた
▼[WordPress] 固定ページでそのページに子ページがあるかまたは子ページそのものであるかを判定
https://gist.github.com/gatespace/7147931
今回のコードは固定ページ時にサイドバーで親子関係持った固定ページを一覧で出力したかった時に調べたコード、そのうち現在のページとサイドバー内で同じリンクを持ってるaタグににclassを振るコードも作りたい
関数化している記事あったから乗っけとく↓