wordpress 子カテゴリーのみのリスト表示


wordpressでサイト制作しているとサイドバーにサブメニューを追加したくなったりします。

<?php wp_list_categories(); ?>を使えば簡単なのですが全てのカテゴリーが表示されてしまいますよね。excludeを使ったり手作業で1ページごとにソースを書くのも現実的でないしwordpressをCMSとして利用する意味がありません。なんとか動的にページごとに合ったサブメニューを出力できないものかと悩んでいました。

  • 親カテゴリー
    • 子カテゴリーA
      • 孫カテゴリーA
      • 孫カテゴリーB
      • 孫カテゴリーC
    • 子カテゴリーB
    • 子カテゴリーC

上の構造の場合、親カテゴリーページの時は子カテゴリーA,B,Cが表示され孫カテゴリーは表示されなくて、子カテゴリーAページの時は孫カテゴリーA,B,Cのみが表示されるようにしたいのです。

つまり、子カテゴリーのみを表示したいわけです。

いろいろ探してみたところWordPressのサブページナビゲーションを動的にする方法を発見!

記事内のソースを有難く使わせていただきました。

しかし、親カテゴリーページの時にどうしても子カテゴリー、孫カテゴリーも全て表示されてしまいます。

そこでソースをいじってみました。

【元のソース】
<?php
global $wp_query;
if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
} ?>
<?php if(wp_list_pages(”title_li=&child_of=$parent&echo=0″ )): ?>
<div id=”submenu”>
<ul>
<?php wp_list_pages(”title_li=&child_of=$parent” ); ?>
</ul>
</div>
<?php endif; ?>

【改変ソース】
<?php
global $wp_query;
if( empty($wp_query->post->post_children) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_children;
} ?>
<?php if(wp_list_pages(”title_li=&child_of=$parent&echo=0″ )): ?>
<div id=”submenu”>
<ul>
<?php wp_list_pages(”title_li=&child_of=$parent&depth=1” ); ?>
</ul>
</div>
<?php endif; ?>

parentをchildrenに修正し、1番目の階層のみ表示するという&depth=1を入れました。

このソースをサイドバーに貼り付けるだけです!

By TIDE • 2008年9月18日
Comments(0) wordpress

Trackback URL:

 

コメントを書く / Leave a Comment

« wordpress 改行プラグイン | Home | 出雲大神宮 »

 
© TIDE Web Design All Rights Reserved.