【WordPress】わたしのサイドバー。

サイドバーに下層ページリストを設置したけど、カスタム投稿タイプとかお問い合わせとか色々考慮してみた。

というわけで、、

わたしのサイドバー公開!(〃∇〃)

<div id="sidebar">

<?php
    global $wp_query;
    $page_id = $wp_query->post->ID;
    $parent_id = $wp_query->post->post_parent;
?>

<?php /********** お問い合わせページは親子があるけど親のみの表示 **********/
    if(is_page('contact') || is_page('thanks')){ ?>
<h2 class="current">お問い合わせ</h2>

<?php /********** 404 **********/
    }elseif(is_404()){ ?>
<h2 class="current">404 not found</h2>

<?php /********** 親があるページ **********/
    }elseif($wp_query->post->post_parent){
?>
<h2><a href="<?php the_permalink($parent_id); ?>"><?php echo get_the_title($parent_id); ?></a></h2>
<?php if(wp_list_pages("title_li=&child_of=".$parent_id."&echo=0")) {  ?>
<ul class="child_pagelist">
    <?php wp_list_pages("title_li=&child_of=".$parent_id); ?>
</ul>
<?php } ?>

<?php /********** 子兄弟があるページ **********/
    }elseif(!is_404() && wp_list_pages("title_li=&child_of=".$page_id."&echo=0")){
?>
<h2 class="current"><?php the_title(); ?></h2>
<?php if(wp_list_pages("title_li=&child_of=".$page_id."&echo=0")){  ?>
<ul class="child_pagelist">
    <?php wp_list_pages("title_li=&child_of=".$page_id); ?>
</ul>
<?php } ?>

<?php  /********** カスタム投稿タイプ(制作実績:works、実績カテゴリー:cat_works) **********/
}elseif(is_post_type_archive('works') || is_tax('cat_works') || is_singular('works')){ ?>    
<?php if(is_tax('cat_works') || is_singular('works')){ ?><h2><a href="<?php echo home_url(); ?>/works/">制作実績</a></h2><?php }else{ ?><h2 class="current">制作実績</h2><?php } ?>
<ul class="child_pagelist">
    <?php wp_list_categories("post_type=works&taxonomy=cat_works&title_li="); ?>
</ul>

<?php  /********** 投稿(アーカイブページスラッグ:news) **********/
}elseif(is_page('news') || is_category() || is_single()){ ?>    
<?php if(is_category() || is_single()){ ?><h2><a href="<?php echo home_url(); ?>/news/">新着情報</a></h2><?php }else{ ?><h2 class="current">新着情報</h2><?php } ?>
<ul class="child_pagelist">
    <?php wp_list_categories("title_li="); ?>
</ul>

<?php  /********** 親子兄弟がないページ **********/
}else{ 
?>    
<h2 class="current"><?php the_title(); ?></h2>

<?php } ?>

</div>

出力されるHTML

<div id="sidebar">

<h2 class="current">親ページタイトル</h2>
<ul class="child_pagelist">
    <li class="page_item page-item-30"><a href="#">子ページ1</a></li>
    <li class="page_item page-item-31"><a href="#">子ページ2</a></li>
    <li class="page_item page-item-32"><a href="#">子ページ3</a></li>
    <li class="page_item page-item-33"><a href="#">子ページ4</a></li>
    <li class="page_item page-item-34"><a href="#">子ページ5</a></li>
</ul>

</div>

親のページにいる時だけh2にcurrentクラスが付きます。
子ページにいる時はリストにcurrent_page_itemクラスが付与されます。

それらを使って、CSSで装飾してくださ〜い

他に良い方法あったら教えてください。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です