WordPressカスタマイズ事例

固定ページの下層ページ一覧を取得し、自ページにはクラスを付与して、一覧表示する

サイドバーにサブメニューを並べたりしますよね。

会社概要
 代表挨拶
 会社沿革

みたいに。
これを自動でやることができます。
自動でやれれば、会社概要の下層に新たにもう1ページ追加しても、動的に表示してくれますから楽チンです。

まず、function.php で現在のページのIDから最上位の親のページのオブジェクトを取得する関数を作ります。

function ps_get_root_page( $parent_id ) {
if( $parent_id == false ) {
return false;
}
while( $parent_id ) {
$page = get_post( $parent_id );
$result[] = $page;
$parent_id = $page->post_parent;
}
$result = array_reverse( $result );
//rootがtureの場合0番目(rootページのみ)をセット
if( $root == true) {
$result = $result[0];
}
return $result;
}

サイドバーにページ一覧を並べる場合は、テーマのsidebar.phpに下記を記述。

<?php
$root_page = ps_get_root_page( $post->ID );
$thePostID = $root_page->ID;
$children = wp_list_pages('title_li=&child_of='. $thePostID. '&echo=0');
$cid = get_the_ID();
?>
<div class="side-menu">
<ul class="s-navi">
<li class="page_item <?php if($cid==$thePostID){echo 'current_page_item';} ?>">
<a href="<?php echo get_the_permalink($thePostID); ?>"><?php echo get_the_title($thePostID); ?></a>
</li>
<?php
if ( $children ){echo $children;}
?>
</ul>
</div>

関連するWordPressカスタマイズ事例