以前、「最近の投稿」に日付を入れる方法を紹介しました。
同じ悩みを持つ方が多かったようで、けっこうなアクセス数がありました。
今回は、ITPK版ページ ウィジェットを作ってみます。

親兄弟ページへのリンク
やりたいことを大雑把に書くと、「現在表示中のページの、親ページと兄弟(姉妹?)ページを表示する」ということです。
準備
まず前提として、ウィジェットに対応したデザインテーマを使っている必要があります。
そして、プラグインが1つ。前回も使ったので、既に入れている人は無視してください。
「PHP Code Widget」は、ウィジェット内でPHPのコードを実行するためのプラグインです。
これを wp_content/plugins にアップロードしてから、管理画面で有効化してください。
ウィジェットを設定
WordPressの管理画面で、外観→ウィジェット画面で、PHP Code ウィジェットをサイドバーにドラッグ&ドロップします(図中1)。
そして、タイトルとコードを書きます(図中2)。図は以前の記事の流用なので、中身のタイトルやコードは下記を見てください。
今回はタイトルを「ページ」とします。もちろん好きな文字列でOKです。
コードはこれです。
<ul>
<li id="pagelist-home"><a href="<?php echo get_option('home'); ?>/">Home</a></li>
<ul>
<?php
if ( is_home() || ! is_page() ) {
wp_list_pages("title_li=&depth=1" );
} else {
global $wp_query;
$page_id = $wp_query->post->ID;
if ( $wp_query->post->post_parent ) {
// child page
$parent_id = $wp_query->post->post_parent;
wp_list_pages("title_li=&include=".$parent_id );
?>
<ul>
<?php
if(wp_list_pages("title_li=&child_of=".$parent_id."&echo=0" )) {
wp_list_pages("title_li=&child_of=".$parent_id );
}
?>
</ul>
<?php
} else {
// parent page
wp_list_pages("title_li=&include=".$page_id );
?>
<ul>
<?php
if(wp_list_pages("title_li=&child_of=".$page_id."&echo=0" )) {
wp_list_pages("title_li=&child_of=".$page_id );
}
?>
</ul>
<?php
}
}
?>
</ul>
</ul>
あとは、保存を押せばOK。
大雑把な説明
トップページやブログ記事を表示中(is_home() || ! is_page() )の時は、最上位ページ(depth=1)のリストを表示します。
ページ表示中で、それが子ページ($wp_query->post->post_parent が真)ならば、親ページとその子たち(child_of= $parent_id)、つまり自分の兄弟ページのリストを表示します。
ページ表示中で、それが子ページではない($wp_query->post->post_parent が偽)ならば、自分とその子ページのリストを表示します(child_of= $page_id)。
今後の課題
ページ階層は2階層(親と子)までに対応しています。
孫ページとかその先まではまだ考えていません。
凄く参考になる記事有り難うございます。
実は、現在固定ページのみでサイトを制作していて、
困っていた所貴サイトを見つけました。
もう少しで自分の実装したかった事に手が届きそうなのですが、
解決がなかなかできそうにありません。
もしよろしければ、下記の際どのようにすればよいのか、
ご教授頂く事はかのうでしょうか。
————————————
現在表示中のページが親ページの場合、
その親ページに属する子ページの一覧を表示する。
もし、現在表示中のページが子ページなら、
兄弟ページ(親ページが同じ)の一覧を表示する(ただし、自分自身は除外する)。
————————————
上記を実装したいのですが、その場合のコードはどうなりますでしょうか。
何卒どうぞよろしくお願い致します。