WordPressの固定ページ以外にカテゴリのナビゲーションを追加する
妙に、カテゴリ一覧への誘導が弱い気がしてきました。ヘッダーあたりに持ってきてかつ、そんなに強調しすぎないようにどうにかならないかなーと思って画像を使って実装してみました。
完成図
素材に合わせてメモっぽくと思って作りました。
ちなみに、こういう画像を使ってスプライト形式にしています!(表示用にちょっと縮小しています)
実装
カスタムメニューを使えばもっと楽々できるの…かな?実は私カスタムメニュー使ったことがなくて、手動実装みたいなものなんですけど…!
header.php
<?php if(!is_page()): ?> <?php if(is_single()||is_category()): /* 現在のカテゴリ-の取得 */ $cat_now = get_the_category(); $cat_now = $cat_now[0]; $add_class = ' class="'.$cat_now->slug.'"'; /*スラッグ名*/ endif; ?> <div id="navi-cat"> <ul<?php echo $add_class ?>> <li class="web"><a href="<?php bloginfo('url'); ?>/category/web/">Web関係</a></li> <li class="wordpress"><a href="<?php bloginfo('url'); ?>/category/wordpress/">WordPress</a></li> <li class="excelvba"><a href="<?php bloginfo('url'); ?>/category/excelvba/">Excel/VBA</a></li> <li class="child"><a href="<?php bloginfo('url'); ?>/category/child/">子供のこと</a></li> <li class="notes"><a href="<?php bloginfo('url'); ?>/category/notes/">雑記</a></li> </ul> </div> <?php endif; ?>
※リンク先URLは設定によって違うと思いますのでお確かめください!
まずは1,18行目の条件分けによって、固定ページ以外の場合のみ適用させます。固定ページにもナビがあっても良い方はここは要りません。
2~7行目で、単一記事とカテゴリ一覧ページのみ$add_class
という変数に「 class="カテゴリスラッグ"
」という文字列を入れてあげます。(頭に半角スペースも入ってます)
8~17行目が実際htmlに出力される部分です。9行目のulタグ直後に先程の$add_class
を置くことで、
<!-- 単一記事・カテゴリ一覧のとき --> <nav id="navi-cat"> <ul class="web"> <li class="web"><a href=#">Web関係</a></li> (略) </ul> </nav> <!-- それ以外(トップページなど)のとき --> <nav id="navi-cat"> <ul> <li class="web"><a href=#">Web関係</a></li> (略) </ul> </nav>
このように、カテゴリに属しているページのときだけulにクラスが追加され、それ以外のページはクラスなしのulタグを出力できます。あとはcssによって出力画像を調整します。
style.css
#navi-cat ul{ overflow:hidden; zoom:1; width:570px; height:20px; } #navi-cat ul li{ display:inline; zoom:1; } #navi-cat ul li a{ display: block; text-indent: 100%; overflow: hidden; height:0; padding:20px 0 0 0; float:left; background:url(images/navi-cat.png) no-repeat; zoom:1; } #navi-cat ul li.web a{background-position:0 0; width:114px;} #navi-cat ul li.wordpress a{background-position:-114px 0; width:114px;} #navi-cat ul li.excelvba a{background-position:-228px 0; width:114px;} #navi-cat ul li.child a{background-position:-342px 0; width:114px;} #navi-cat ul li.notes a{background-position:-456px 0; width:114px;} #navi-cat ul li.web a:hover{background-position:0 -20px;} #navi-cat ul li.wordpress a:hover{background-position:-114px -20px;} #navi-cat ul li.excelvba a:hover{background-position:-228px -20px;} #navi-cat ul li.child a:hover{background-position:-342px -20px;} #navi-cat ul li.notes a:hover{background-position:-456px -20px;} #navi-cat ul.web li.web a{background-position:0 -40px;} #navi-cat ul.wordpress li.wordpress a{background-position:-114px -40px;} #navi-cat ul.excelvba li.excelvba a{background-position:-228px -40px;} #navi-cat ul.child li.child a{background-position:-342px -40px;} #navi-cat ul.notes li.notes a{background-position:-456px -40px;}
マウスオーバーで2段目(ボーダーなし)、カレント(カテゴリに属したページ)のときは3段目(赤線)が表示されるようになっています。
私の用意した画像は横114*5=570px、縦20*3=60pxでしたのでこのようなcssになっていますが、用意される画像のサイズによって調節してくださいね。
いかがでしたでしょうか?どなたかの参考になれば幸いです!
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。