WordPressでサイトを作成する際に、カテゴリ毎のサイドメニューを表示させたい場合の設定方法をメモしておきます。
2015/01/20 追記
仕様3が抜けていたので、追記しました。
仕様
- ページを「固定ページ」で作成し、「親ページ」=「カテゴリトップ」とし、子ページ、孫ページの一覧がサイドメニューとして表示される。
- 子ページがない場合は、サイドメニューを表示させない。
- カスタムフィールド「サイドメニューに表示する」を作成し、チェックの有無で表示を切り替える
今回は、以前メモした記事【WP】WordPressで固定ページの階層化されたサイドメニューを表示させるに、仕様2、3を追加した進化バージョンです。
以下のテンプレートと、別途「サイドメニューに表示・非表示」を切り替えるカスタムフィールドの設定が必要です。
カスタムフィールド
フィールドラベル:サイドメニューに表示させる(任意の名前)
フィールド名:side_menu_on
フィールドタイプ:真/偽
テンプレート
<div id="sub"> <?php if($post->post_parent) $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0"); if ($children) { ?> <?php $ancestor = array_pop( get_post_ancestors( $post->ID ) ); $top_parent_permalink = get_permalink( $ancestor ); $top_parent_title = get_the_title( $ancestor ); ?> <section id="subNav"> <h1><a href="<?php echo ($top_parent_permalink);?>"><?php echo ($top_parent_title);?></a></h1> <ul> <?php $parent = array_reverse($post->ancestors); if($parent) { $pages = $parent[0]; }else{ $pages = $post->ID; } if($pages){ if ( $list_pages = wp_list_pages( 'title_li=&echo=0') ) { wp_list_pages('echo=1&sort_column=menu_order&meta_key=side_menu_on&meta_value=1&title_li=&child_of='. $pages); } } ?> </ul> </section> <?php } ?> </div><!-- /#sub -->
コメント