親を持つページをサブメニューとして動的に書き出す

WordPressのページ機能では、普通のカテゴリーみたいに親カテゴリを持つことができます。
ということは、それをサブメニューにできるはず…。さらに、子ページができると自動的にメニューが増えてくれれば、なおよし。

wordpressをいじってみた サブナビゲーションの設置 を参考にしつつ

こちらでは、各ページ分sidebar.phpをつくったみたいですが、今回は一括で。

<?
global $wp_query;
if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
} ?>
<? if(wp_list_pages("title_li=&amp;child_of=$parent&amp;echo=0" )): ?>
<ul>
<li><a href="<? the_permalink() ?>"><? the_title(); ?>TOP</a></li>
<? wp_list_pages("title_li=&amp;child_of=$parent" ); ?>
</ul>
<? endif; ?>

この記述をpage.テンプレートのサブメニューを出したい部分に追加します。
if関数を使用すれば、index.テンプレートだけで完結できるかもしれませんが、そこらへんはよくわからないのでキラーパス。

書き出されるHTMLソースは

<ul>
<li><a href="http://sampleblog/page">親ページタイトルTOP</a></li>
<li class="page_item"><a href="http://sampleblog/page/page_child01" title="子ページタイトル01">子ページタイトル01</a></li>
<li class="page_item"><a href="http://sampleblog/page/page_child02" title="子ページタイトル02">子ページタイトル02</a></li>
・
・
・
</ul>

となります。

ちなみに、親ページタイトルをリストから出す場合は、

<?
global $wp_query;
if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
} ?>
<? if(wp_list_pages("title_li=&amp;child_of=$parent&amp;echo=0" )): ?>
<h3><a href=&quot;<? the_permalink() ?>&quot;><? the_title(); ?></a></h3>
<ul>
<? wp_list_pages("title_li=&amp;child_of=$parent" ); ?>
</ul>
<? endif; ?>

書き出されるソースは、

<h3><a href="http://sampleblog/page">親ページタイトル</a></h3>
<ul>
<li class="page_item"><a href="http://sampleblog/page/page_child01" title="子ページタイトル01">子ページタイトル01</a></li>
<li class="page_item"><a href="http://sampleblog/page/page_child02" title="子ページタイトル01">子ページタイトル02</a></li>

・
・
・
</ul>

あとは、CSSで適宜装飾してください。

コメントを残す

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

CAPTCHA