flam

pagetop

WordPressのサブページナビゲーションを動的に生成する方法

2010.06.30

WordPressの記事の投稿の方法にはブログの記事のように時系列にそって書き足していくようなものに向いている「投稿」と、比較的静的な内容のものを書くのに向いている「ページ」があります。

サイトの内容をすべて「投稿」で書いて、カテゴリーやタグを利用して分類する手もありますが、後々の更新・管理のことも考慮すると静的なコンテンツは「ページ」で作成しておきたいものです。

「ぺージ」もカテゴリーと同様に階層構造を持たせることができ、親ページの下にサブページを作成することができます。そして、テンプレートタグ

<?php wp_list_pages('title_li=&depth=1'); ?>

を使っていろいろな方法で表示できますが、サブページの取り扱いが十分ではないので、今回はサブページがある時とない時を判定し、サブページがある時はサブページナビゲーションを表示する方法をご紹介します。

<?php
global $wp_query;
if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
}
$ul_top_title = get_the_title($parent);
$ul_top_url = get_permalink($parent);
?>
<?php if(wp_list_pages("title_li=&child_of=$parent&echo=0" )): ?>
<h2><a href="<?php echo $ul_top_url; ?>"><?php echo $ul_top_title; ?></a></h2>
<ul>
<?php
$children = wp_list_pages('title_li=&sort_column=menu_order&child_of='.$parent.'&echo=0');
echo $children;
?>
</ul>
<?php endif; ?>

簡単に上記のソースを説明するとまず、現在のページが親ページを持っているか否か確認し、親ページがない場合は、現在のページIDを「親」に指定します。次に、サブページがあるか否かをチェックし、サブページがある場合は、h2に親ページのページ名を挿入し、リストを表示させます。子ページがなければ何も表示されません。

参考サイト

WordPressのサブページナビゲーションを動的にする方法WordPress のサブページの一覧を自動的に表示する方法

コメント

トラックバック

TrackBack URL : http://blog.flam-w.jp/blog/2010/06/30/wordpress%e3%81%ae%e3%82%b5%e3%83%96%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%8a%e3%83%93%e3%82%b2%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e5%8b%95%e7%9a%84%e3%81%ab%e7%94%9f%e6%88%90%e3%81%99%e3%82%8b/trackback/

Copyright(c)flam.All Rights Reserved.