WordPressの固定ページ以外にカテゴリのナビゲーションを追加する

WordPressの固定ページ以外にカテゴリのナビゲーションを追加する

妙に、カテゴリ一覧への誘導が弱い気がしてきました。ヘッダーあたりに持ってきてかつ、そんなに強調しすぎないようにどうにかならないかなーと思って画像を使って実装してみました。


完成図

130117-1

素材に合わせてメモっぽくと思って作りました。

130117-2

ちなみに、こういう画像を使ってスプライト形式にしています!(表示用にちょっと縮小しています)

カテゴリが増えたので、現在は違う画像を使っています。

実装

カスタムメニューを使えばもっと楽々できるの…かな?実は私カスタムメニュー使ったことがなくて、手動実装みたいなものなんですけど…!

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になっていますが、用意される画像のサイズによって調節してくださいね。

いかがでしたでしょうか?どなたかの参考になれば幸いです!

公開日:2013/01/17

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。